Java 技术栈中构建微服务架构的常见工具

81
发布时间:2024-07-12 11:45:29

在Java生态中,微服务架构的实现依托于一系列强大的框架和工具。从灵活的微服务框架Spring Boot与Spring Cloud,到高效配置中心如Spring Cloud Config,再到稳定的服务注册与发现机制如Eureka,加之智能的API网关如Spring Cloud Gateway,以及可靠的客户端负载均衡解决方案如Ribbon,这些组件共同编织出一张稳固而敏捷的微服务网络。本文将带你了解这些技术工具,助力你构建健壮的微服务架构。

一、微服务框架:

1.Dubbo

基于Java的高性能 RPC 分布式服务框架

 

2.Spring Cloud

“全家桶”,因其具备微服务架构体系中所需的各个服务组件,

比如服务注册发现(如Spring Cloud Eureka、Zookeeper、Consul)、API网关路由服务(Spring Cloud Zuul),客户端负载均衡(Spring Cloud Ribbon,Zuul默认集成了Ribbon)、服务容错保护(Spring Cloud Hystrix),消息总线 (Spring Cloud Bus)、分布式配置中心(Spring Cloud Config)、消息驱动的微服务(Spring Cloud Stream)、分布式链路跟踪服务(Spring Cloud Sleuth)。

 

3.比较

使用Dubbo构建的微服务架构就像组装电脑,各个环节的可选自由度很高,但是最终结果很有可能因为一条内存质量不行就点不亮了,但是如果是一个高手,这一切都不存在问题;

使用Spring Cloud就像品牌机,在Spring Source的整合下,做了大量兼容性的测试,保证了机器拥有更高的稳定性,但是如果要在使用非原装组件外配件时,需要对配件足够的了解。

 

二、配置中心

1.原理

a.配置实时生效:

传统的静态配置方式要想修改某个配置只能修改之后重新发布应用,要实现动态性,可以选择使用数据库或配置文件;

配置中心专门针对这个业务场景,兼顾实时性和一致性来管理动态配置。

b.配置管理流程:

配置的权限管控、灰度发布、版本管理&回滚、配置格式检验、安全配置、多环境、多集群等一系列的配置管理。

 

2.主流分布式配置中心框架:

Spring Cloud Config 依赖git,存储在git

Apollo 携程开源的配置管理中心,存储在mysql

Nacos 阿里开源,存储在mysql

 

三、注册中心

1.原理:

a.注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。

在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

服务提供者、服务消费者、注册中心

各个微服务在启动时,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据。

服务消费者从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。

微服务网络地址发送变化(例如实例增加或IP变动等)时,会重新注册到注册中心。这样,服务消费者就无需人工修改提供者的网络地址了。

服务的注册与发现:服务注册是指微服务在启动时,将自己的信息注册到注册中心的过程;服务发现是指查询可用的微服务列表及网络地址的机制。

 

b.注册中心解决了服务之间的自动发现。

在没有注册中心时候,服务间调用需要知道被调方的地址或者代理地址。当服务更换部署地址,就不得不修改调用当中指定的地址或者修改代理配置。

而有了注册中心之后,每个服务在调用别人的时候只需要知道服务名称就好,修改地址都会通过注册中心同步过来。

 

2.主流分布式注册中心框架:

Eureka AP

Zookeeper CP

Nacos AP

 

补充:

CAP原则:指的是在一个分布式系统中,

一致性(Consistency) 写操作之后的读操作,必须返回该值

可用性(Availability) 只要收到用户的请求,服务器就必须给出回应。

分区容错性(Partition tolerance) 大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区,区间通信可能失败

这三个要素最多只能同时实现两点,不可能三者兼顾。

 

四、API网关路由服务

1.作用

主要是限流、认证鉴权(过滤器)、路由转发

路由转发:路由id(注册服务的id)、uri路径、判定器、过滤器,可以写在配置文件中,或者存在表中

 

2.技术

nginx 是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务;

Spring Cloud Zuul 是Netflix出品的一个基于JVM路由和服务端的负载均衡器;

Spring Cloud gateway 是spring出品的基于spring的网关项目,集成断路器,路径重写,性能比Zuul好;

 

五、客户端负载均衡

  • Ribbon:一个客户端负载均衡库,通常与 Feign 或其他 REST 客户端一起使用。
  • Feign:声明式的 HTTP 客户端,内置 Ribbon 支持,简化了微服务间的调用。
  • Spring Cloud LoadBalancer:一个抽象层,可以与 Ribbon 或其他负载均衡器集成,为微服务调用提供负载均衡策略。

本文被 Java编程 专题收录