1、微服务架构
2、微服务架构演变
2.1、单体架构
2.2、分布式架构
2.3、微服务
3、微服务技术对比
4、SpringCloud
5、服务拆分与远程调用
5.1、服务拆分
5.2、远程调用
6、微服务提供者与消费者
1、微服务架构
注册中心:记录服务的IP、端口号以及功能
配置中心:统一管理服务集群中的配置,实现配置的热更新
服务网关:对用户身份做校验,同时将请求路由至相应服务
分布式缓存:将数据库数据放入内存,为应对高并发,采用分布式结构
分布式搜索:海量数据的搜索、统计和分析
数据库:数据写 *** 作、事务 *** 作等
消息队列:异步通信组件,降低服务的响应时间,提升整体系统的吞吐能力,提高并发
分布式日志:用于系统运行状态记录,便于后续的故障分析、排查
系统监控链路追踪:监控服务节点运行状态、CPU负载占用情况等
利用持续集成工具进行服务的自动化配置
2、微服务架构演变 2.1、单体架构概念:将业务的所有功能集中在一个项目中开发,达成一个包部署
优点:架构简单、部署成本低
缺点:耦合度高、代码量庞大复杂
2.2、分布式架构概念:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务
优点:耦合度低、有利于服务升级拓展
缺点:架构复杂、难度大
服务治理的关注点:
1)服务拆分粒度
2)服务集群地址的维护
3)服务之间的远程调用
4)服务健康状态的感知
2.3、微服务概念:经过良好架构设计的分布式架构方案
优点:拆分粒度更小、服务更独立、耦合度更低
缺点:架构非常复杂,运维、监控、部署难度提高
特征:
1)单一职责:微服务拆分粒度更小,每一个微服务对应唯一的业务能力,避免重复开发
2)面向服务:微服务对外暴露接口
3)自治:技术独立、数据独立、部署独立
3、微服务技术对比现有主流微服务框架:
Dubbo | SpringCloud | SpringCloudAlibab | |
注册中心 | zookeeper、Redis | Eureka、Consul | Nacos、Eureka |
服务远程调用 | Dubbo协议 | Feign(http协议) | Dubbo、Feign |
配置中心 | 无 | SpringCloudConfig | SpringCloudConfig、Nacos |
服务网关 | 无 | SpringCloudGateway、Zuul | SpringCloudGateway、Zuul |
服务监控和保护 | dubbo-admin、功能弱 | Hystrix | Sentinel |
微服务实现方案:
4、SpringCloud功能:springCloud 集成了各种微服务功能组件,并基于 springBoot 实现了组件的自动装配。
SpringCloud 与 SpringBoot 的兼容关系:
5、服务拆分与远程调用 5.1、服务拆分1)不同微服务,不要重复开发相同业务
2)微服务数据独立,不要访问其他微服务的数据库
3)微服务可以将自己的业务暴露接口,供其他微服务调用
5.2、远程调用1)目前有两个独立的微服务:
- 根据订单id查询订单信息
- 根据用户id查询用户信息
2)需求:根据订单id查询订单的同时,把订单所属的用户信息一起返回
3)解决:订单查询微服务向用户查询微服务发起远程调用——利用 RestTemplate
1.在配置类中,注册 RestTemplate:
2.利用 RestTemplate 组件,发起远程调用
6、微服务提供者与消费者- 服务提供者:一次业务中,被其他微服务调用的服务。(提供接口给其他微服务)
- 服务消费者:一次业务中,调用其他微服务的服务。(调用其他微服务提供的接口)
提供者和消费者的角色是相对的,一个服务既可以是提供者,又可以是消费者
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)