单体架构:
应用程序就是一个项目,在一个进程中运行
单体架构的优点是开发简单、集中管理、没有分布式损耗
微服务架构:
微服务架构是一种架构风格,旨在通过将单体程序的功能分解到各个离散的服务中心以实现对解决方案的解耦
微服务架构特点:
一组小的服务
独立进程、独立部署
轻量级通信,如http
基于业务构建微服务
无集中式管理,每个微服务可以用不同的技术栈
微服务架构优点:
强模块化边界
可独立部署
技术多样性
可以对单个服务进行负载;
微服务缺点:
系统结构复杂
运行效率低
运维复杂性
数据最终一致性
什么时候引入微服务
业务复杂、开发团队过于庞大的情况下适合引入微服务架构
服务分层
聚合服务(也叫适配服务、边界服务):做一些适配、聚合、裁剪的工作
基础服务:
微服务架构要处理的问题:
服务间通讯、服务治理与服务发现、网关和安全认证、限流与容错、监控等
如果使用.Net Core技术的微服务框架,推荐使用腾讯在用的框架Consul、Ocelot、.Net Core、Polly...。张善友将内部架构整理出一个开源项目NanoFabric(https://github.com/geffzhang/NanoFabric)
如何拆分微服务:
微服务应该按照领域划分
微服务与中台的区别:
微服务属于技术架构,中台属于业务架构,中台实施是基于微服务架构
服务注册中心:
服务之间需要服务发现机制,用户相互感知彼此的存在。服务启动时会将自身的服务信息注册到注册中心,并订阅自己需要的组件
它保存了各个可用服务实例的网络地址,服务注册中心必须高可用、实时更新功能。Netflix Eureka就是一个服务注册中心,它提供了服务注册和查询服务信息的REST API,通过POST请求注册自己的地址,每30秒发送一个PUT请求刷新注册信息,通过DELETE注销服务,通过GET查询可用服务实例信息。
其他服务注册中心:
consul:一个用于discovering和configuring的工具。它提供了允许客户端注册和发现服务的API。Consul可以进行服务健康检查,以确定服务的可用性。
zookeeper:在分布式应用中被广泛使用,高性能的协调服务。 Apache Zookeeper 最初为Hadoop的一个子项目,但现在是一个顶级项目。
etcd:高可用,分布式,强一致性的,key-value,Kubernetes和Cloud Foundry都是使用了etcd。
API网关:
接口对外通信都是通过API网关,网关的作用有:统一接入、安全防护、协议适配、流量管控、长短链接支持、容错能力、日志记录。有了网关之后,各个api服务团队可以专注于自己的业务逻辑处理,而网关更专注于安全、流量、路由等问题。