认识微服务:什么是微服务?
单体架构:单体架构是将项目的所有功能集中在一个项目中开发,打成一个包部署。
单体架构的优点:
1.架构简单
2.部署的成本低
单体架构的缺点:
1.耦合度高,未来那天修改了代码,可能会导致相关的功能出现
分布式架构:分布式架构是对项目结构进行拆分,独立开发,每一个功能都对应一个项目,称为一个服务。
分布式架构的优点:
1.降低了代码的耦合度,我们修改代码的时候不会对其他功能产生影响。
2.有利于以后对服务升级拓展新的功能
分布式架构要考虑的问题:
微服务:
微服务是经过良好架构设计的分布式架构方案,微服务架构的特征:
1.单一职责:微服务拆分的力度小,每一个服务对应一个业务能力,做到单一职责,避免重复业务开发。
2.面向服务:微服务对外暴露业务接口。
3.自治: 团队独立,技术独立,数据独立,部署独立。
4.隔离性强:服务调用做好隔离,容错,降级,避免出现级联问题。
两个不同架构的特点:
单层架构:简单方便,高度耦合,扩展性差,适合小型的项目。
分布式架构:低耦合,扩展性好,但架构比较复杂,难度大,适合大型互联网项目
微服务:
优点:拆分力度更小,服务更独立,耦合度更低
缺点:架构非常复杂,运维,监控,部署难度提高
微服务技术对比:
SpringCloud:
1.SpringCloud是目前国内使用最广泛的微服务框架。
2.SpringCloud集成了各种微服务功能的组件。并基于SpringBoot实现了这些组件的自动装配,从而提高了良好的体验。
服务拆分注意事项:
微服务调用方式:
1.基于RestTemplate发起的http请求实现远程调用
2.http请求做远程调用是与语言无关的调用,只要知道对方的ip,端口,接口路径,请求参数即可。
提供者与消费者:
服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
服务消费者:一次业务中,调用其他微服务的服务。
一个服务可以同时扮演提供者和消费者。
注册中心(Eureka):
远程调用的问题:
1.服务消费者该怎么获取到服务提供者的地址信息
2.如果有多个服务提供者,消费者该如何选择
3.消费者如何得知服务提供者的健康状态
Eureka的作用:
在Eureka架构中,微服务角色有两类:
EurekaServer:服务端,注册中心
1.记录服务信息
2.心跳监控
EurekaCliont:客户端
1.Provider:服务提供者:
1.1:注册自己的信息到EurekaServer
1.2:每隔一段时间向EurekaServer发送心跳
2.consumer:服务消费者
2.1:根据服务名称从EurekaServer中拉取服务列表
2.2:基于服务列表做负载均衡,选中一个微服务后发起远程调用
搭建注册中心:
1.引入eureka-server依赖
2.添加@EnableEurekaServer注解
3.在配置文件中配置eureka地址
服务注册:
1.引入eureka-client依赖
2.在配置文件中配置eureka地址
服务发现:
1.引入eureka-cilient依赖
2.配置eureka地址
3.给RestTemplate添加@LoadBalanced注解
4.用服务者提供的服务名称实现远程调用
Ribbon负载均衡
策略:Ribbon的负载均衡是使用IRule的接口来定义的,下面的每一个子接口都是一种规则。
Nacos注册中心:Nacos是阿里巴巴的产品,现在是SpringCloud中的一个组件。相比Eureka功能更加丰富,在国内受欢迎程度较高。
![](https://i-blog.csdnimg.cn/blog_migrate/f94d2b91023aabb83030489cc249d450.png)
Eureka与Nacos的区别: