目录
一、什么是Spring Cloud
SpringCloud是一系列框架的有序集合,利用了Springboot开发的便利性,简化了分布式系统的基础性开发,提供了一些可以让开发者快速构建微服务应用的工具,比如配置中心、服务发现注册、熔断、消息总线、负载均衡、智能路由等,这些服务可以在任何分布式环境下很好的工作。
Spring Cloud Confg:配置中心
Spring Cloud Bus:类似消息总线的一个中间件
Spring Cloud for Cloud Foundry:基于Cloud Foundry部署应用程序的中间服务
Spring Cloud Cluster: 类似于选举算法的中间件
Spring Cloud Consul:服务发现中间件
Spring Cloud Security:自身安全组件
Spring Cloud Sleuth:链路追踪组件
Spring Cloud Data Flow:数据流组件
Spring Cloud Connectors:连接器
Spring Cloud CLI:自身命令行控制面板
Spring Cloud GateWay:网关服务
Spring Cloud Stream:使得Spring Cloud与Kafuka、RabbitMQ中间件紧密结合
二、SpringCloud解决方案
SpringCloud解决方案之Netflix | SpringCloud解决方案之Alibaba |
服务注册与发现:Eureka | 服务注册与发现:Nacos |
熔断限流:hvstrix | 熔断限流:Sentienl |
REST Client:Feign | 分布式消息中间件:RocketMQ |
客户端负载均衡:Ribon | 分布式事务中间件:Seata |
微服务网关:zuul | RPC服务框架:Dubbo |
三、Netflix停更替代方案
四、微服务的设计和拆分原则
4.1 AKF扩展拆分
AKF扩展立方体:
微服务拆分要点:
- 低耦合、高内聚:一个服务完成一个独立的功能。
- 按团队结构,小规模团队维护,快速迭代。
微服务拆分方式,按照不同的服务功能进行拆分:
Y轴(按照不同的服务功能进行拆分):
Z轴(按照不同的数据分区进行拆分,如健康码北京服务、广东服务):
X轴(水平复制,绝对平等地复制服务与数据,解决容量和可用性的问题 <集群加负载均衡>):
4.2 前后端分离原则
后端仅返回前端所需数据,不需渲染前端页面和控制前端效果,而一般用node.Js实现前端渲染层。 完全分离:Vue、Anqular、React。
4.3 无状态服务
实例X、Y把有状态的数据共享到Redis,可动态增加A的节点。