【退役之重学java】关于spring cloud 微服务和分布式-爱代码爱编程
一、微服务是什么
- 微化拆分: 拒绝大型单体应用,基于业务边界进行服务微化拆分;
- 独立部署: 通过完全自动化部署机制来独立部署
- 独立运行: 各个服务独立运行在自己的进程中;
- 轻量级通信: 微服务之间使用轻量级通信机制,通常是 Http API。
二、分布式是什么
- 分布式系统: 若干独立计算机的集合,对用户像单个相关系统;
- 分布式: 将不同的业务分布在不同的地方;
- 集群: 几台服务器集中在一起,每台服务器都完成相同业务,保证系统稳定性、可靠性。
三、远程调用
- 是什么: 分布式系统中,各个服务可能位于不同主机,服务之间需要相互调用,称之为远程调用。
- 怎么做: Spring Cloud 使用 Http + JSON的方式完成远程调用
四、负载均衡
gateway —> ribbon
五、服务注册中心
- 服务注册: 服务注册是指将服务实例的网络位置(如IP地址和端口号)注册到服务注册中心,以便其他服务可以发现和调用它。 a. 微服务通过添加依赖(nacos, actuator) b. 编写配置文件(application.yml) c.
@EnableDiscoveryClient注解的作用是启用服务发现功能,将应用程序注册到服务注册中心,以便其他服务可以发现和调用它。
- 服务发现: 服务发现是指在运行时动态地发现和调用其他服务的能力。通过服务发现,服务可以从服务注册中心获取其他服务实例的网络位置信息,从而实现服务之间的通信和协作。
a.
服务发现就是在一个微服务架构中,通过使用RestTemplate或者Feign等工具来调用另一个服务。通过服务发现,服务可以动态地发现其他服务的实例,并且可以通过网络调用与这些服务进行通信。这种方式使得微服务之间可以相互协作,实现了分布式系统中的服务调用和协同工作。
b. 其实可以这样理解:服务发现就是,使用RestTemplate 或者 Feign 等工具,通过 http api
通信机制,结合微服务名称,从注册中心,调用另外一个微服务 c. 有什么用:实现微服务相互调用,实现微服务负载均衡
六、配置中心
- 为什么要使用配置中心:
a. 在使用集群的时候,同一个微服务需要部署在多台主机上,此时,这里的每个微服务都是相同的,有相同的配置文件。当需要修改配置文件时,产生大量重复性工作
b. 配置中心可以实现自动化配置文件。通过配置中心,您可以将应用程序的配置信息集中管理,并且可以实现配置文件的动态更新和自动刷新。这意味着,当您在配置中心修改了配置信息后,应用程序可以自动获取最新的配置,无需重启或手动刷新。
- 怎么使用配置中心
a. 添加Maven依赖:在项目的pom.xml文件中添加nacos-client的Maven依赖。
b. 在应用的配置文件中添加配置中心信息:在application.yml或application.properties中添加Nacos配置中心的相关配置信息。
c. 将配置上传到Nacos配置中心
d. Nacos客户端可以动态地读取Nacos配置中心中的配置信息。
七、服务熔断
- 是什么: 服务熔断是一种微服务架构中的容错机制,用于防止故障在分布式系统蔓延(服务链式调用,上游服务阻塞,导致下游服务全部阻塞)。服务熔断机制设置服务失败阈值,当超过这个阈值时,开启断路保护机制,告诉后来的机制不要来调用此服务,而从本地直接返回默认的数据。过一段时间后逐渐把请求放进来,直到服务失败次数低于阈值。提升整个系统的稳定性。
- 怎么做:
a. 引入pom依赖,编写application配置,主启动类激活服务发现
b. 在 sentinel 服务中配置熔断规则