spring cloud 和spring boot的版本
spring cloud H SRX1
spring boot 2.2.2
微服务对比单体架构
单体架构:就是将所有功能放在一个项目里开发,最终打成一个包部署
分布式架构:根据业务功能对系统拆分为一个一个服务,好处是可以降低服务耦合,有利于服务升级拓展
微服务:经过良好设计的分布式框架,拆分粒度更小,做到单一职责。会面向服务对外暴露业务接口,数据独立,每一个服务都有自己的数据库,隔离性强,能避免出现级联问题
分布式系统是由一组通过网络进行通信,为了完成任务而协调工作的计算机节点组成。目的是为了让用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。
好处1:读写分离
好处2:容灾快速恢复。当一台从服务器挂掉,能根据策略快速切换到另一台从服务器完成读操作。
分布式服务框架 RPC
http是无状态通信协议
rpc 是一种进程间的通信方式,允许程序调用另一个地址空间(共享网络的另一台机器)的过程或函数。rpc就像调用本地的函数一样去调用远程函数。
dubbo解决·rpc调用的通讯和序列化。序列化的原因是数据传输需要转换
SpringCloud 是目前国内使用最广泛的微服务框架,是基于SpringBoot实现组件的自动装配,从而提供了开箱即用的体验,先就看红色框吧
RestTemplate 发一个远程调用,它可以发任意的http请求
注意下面这个图的注意点:
@SpringBootApplication,加载配置文件
@Bean,创建RestTemplate并注入Spring容器
接下来就是代码里实现远程调用,也很简单,一行代码。
//会自动把json反序列化成user对象,注意序列化的这个说法
User user=restTemplate.getForObject(url,User.class)
依稀就得立哥给我们讲服务的提供者与消费者这些基本概念。一个服务既可以是提供者又可以是消费者,相对而言的。
注册中心 eureka-server
每一个服务在服务启动时都会注册服务信息给注册中心,这么干的好处是什么?
我自己记得最牢固的就是心跳续约,作用是避免服务挂掉你还不知道。
注册中心这一块,看一波老师总结的干货吧。我自己理解的就是他们都面向注册中心了,不管是提供者还是消费者,都直接找的是注册中心。
讲个笑话,要不日子真的过不下了,太累了
孔融爹妈吵架,孔融不耐烦的说:你俩能过过,不能过离这就是孔融让离的故事
eureka自己也是微服务,启动时会把自己也注册到自己上
服务拉取,基于服务名称获取服务列表,再对服务列表做负载均衡
核心代码:
String url="http://userservice/user/"+order.getUserId()
^
|
此处是基于服务名拉取,取代了ip地址
@Bean
@LoadBalanced 加这个负载均衡注解就是说下面这个restTemplate发起的所有请求都被ribbon拦截,并处理
public RestTemplate restTemplate(){
return new RestTemplate();
}
负载均衡的大概就是他根据服务名称去拉取服务列表,他根略Irule(比如轮询)帮你挑一个服务。
要是你觉得不够细,那走一遍源码,放个图自己去啃吧,皮皮虾我们走
最后一定要上老师专业的笔记
(具体中透露着一种整齐,整齐中透漏着一种不想看,哈哈,要是忘了服务注册,服务发现的具体实现,还是可以看看的)