微服务开发与治理

  • 服务注册发现

服务注册就是维护一个登记簿,它管理系统内所有的服务地址。当新的服务启动后,它会向登记簿交待自己的地址信息。服务的依赖方直接向登记簿要 Service Provider 地址就行了。
-Dubbo
-Dubbo深入
-Zookeeper
-Eureka、Nacos

  • API网关

API Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的 Facade 模式很像。API Gateway 封装内部系统的架构,并且提供 API 给各个客户端。它还可能有 其他功能,如授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理等。
-Spring Gateway
-Gateway深入
-Zuul

  • 配置中心

配置中心一般用作系统的参数配置,它需要满足如下几个要求:高效获取、实时感知、分布式访问。

  • 事件调度

消息服务和事件的统一调度,常用用 kafka ,MQ等。
-Rabbit MQ

  • 服务跟踪

随着微服务数量不断增长,需要跟踪一个请求从一个微服务到下一个微服务的传播过程,Spring Cloud Sleuth 正是解决这个问题,它在日志中引入唯一ID,以保证微服务调用之间的一致性,这样你就能跟踪某个请求是如何从一个微服务传递到下一个。

  • 服务熔断

在微服务架构中通常会有多个服务层调用,基础服务的故障可能会导致级联故障,进而造成整个 系统不可用的情况,这种现象被称为服务雪崩效应。服务雪崩效应是一种因“服务提供者”的不 可用导致“服务消费者”的不可用,并将不可用逐渐放大的过程。
-Hystrix

  • API管理

SwaggerAPI管理工具

分布式应用与解决方案

  • 分布式网络通信

-网络通信协议和RPC

  • 分布式ID生成方案

在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。比如数据量太大之后,往往需要对数据进行分库分表,分库分表后需要有一个唯一 ID 来标识一条数据或消息,数据库的自增 ID 显然不能满足需求。

  • 分布式锁

随着业务发展的需要,原单体单机部署的系统被演化成分布式集群系统后,由于分布式系统多线程、多进程并且分布在不同机器上,这将使原单机部署情况下的并发控制锁策略失效,单纯的应用并不能提供分布式锁的能力。为了解决这个问题就需要一种跨机器的互斥机制来控制共享资源的访问。
-分布式锁

  • 分布式事务控制

分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
-分布式事务

  • 负载均衡、限流算法

限流是从用户访问压力的角度来考虑如何应对系统故障。限流为了对服务端的接口接受请求的频率进行限制,防止服务挂掉。限流可以有效应对突发请求过多。
-常见负载均衡与限流算法

Spring Cloud 与 Dubbo

Spring Cloud 为微服务开发提供了生态,而Dubbo做为一种服务治理方案在分布式系统开发中广为使用。二者主要区别有:

  • 底层协议:Spring Cloud基于HTTP协议,Dubbo基于TCP协议进行PRC调用
  • 注册中心:Spring Cloud中集成了Eureka(AP高可用性),Dubbo中推荐使用Zookeeper(CP强一致性)
  • 模型定义:Spring Cloud将一个应用定义为一个服务,而Dubbo将一个接口定义为一个服务

微服务总论 - 图1