微服务就是一种经过良好架构设计的分布式架构方案
微服务是分布式架构的一种,要把服务做拆分,拆分的过程中会产生各种各样的问题。
SpringCloud解决了服务拆分时的服务治理问题。
微服务技术栈包括:
注册中心 拉取或者注册服务信息
配置中心 拉取配置信息
服务网关 校验身份 请求路由 负载均衡
分布式缓存 用户请求先到缓存 在到数据库
分布式搜索 用户集群进行分布式搜索
消息队列 异步通信提高服务并发
分布式日志服务 用于定位异常 统计分析
系统监控和链路追踪
数据库 到Jenkins 到kubernetes、docker、rancher等。
微服务治理
异步通信技术
缓存技术
搜索技术
DevOps(持续集成)
微服务架构演变: 单体架构 所有功能集中在一个项目中开发 打包部署
架构简单 部署成本低 缺点是耦合度高
分布式架构 根据业务功能对系统进行拆分 每个业务模块独立项目开发,成为一个服务
降低服务耦合 有利于服务升级拓展 缺点 部署复杂 远程调用
需要考虑服务拆分粒度如何?服务集群地址如何维护?如何远程调用?服务健康状态如何?
微服务就是一种经过良好架构设计的分布式架构方案,微服务的架构特征:
1.单一职责:微服务拆分粒度更小,每一个微服务都对应唯一的业务能力,做到单一职责,避免重复业务开发。
2.面向服务:微服务对外暴露业务接口
3.自治:团队独立 技术独立 数据独立 部署独立
4.隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题。
高内聚 低耦合 降低服务之间影响的范围 避免集群的故障
代表 SpringCloud和Dubbo 和SpringCloudAlibaba
Dubbo
注册中心 Zookeeper Redis
服务器远程调用 Dubbo
配置中心 没有
服务网关 没有
服务器监控和保护 dubbo-admin ,功能弱
SpringCloud
注册中心 Eureka Consul
服务器远程调用 Feign (http协议 controller)
配置中心 SpringCloudConfig
服务网关 SpringCloudGetway / Zuul
服务器监控和保护 Hystrix
服务链路监控 OpenFeign Dubbo
SpringCloudAlibaba
注册中心 Eureka Nacos 服务注册发现
服务器远程调用 Feign (http协议 controller)/ dubbo 远程调用
配置中心 SpringCloudConfig/Nacos 统一配置管理
服务网关 SpringCloudGetway / Zuul 统一网关路由
服务器监控和保护 Sentinel 流控 降级 保护