什么是微服务?
微服务是分布式架构的一种,分布式架构就是将服务进行拆分,Spring Cloud是解决服务拆分时的服务治理问题.
微服务技术栈
注册中心:记录微服务中每个服务的ip,端口,功能等.
配置中心:统一管理服务集群的配置文件,实现配置的热更新
服务网关:一方面对用户身份做校验,另一方面可以将用户的请求路由到具体的服务上面,路由的过程中可以做一些负载均衡.
分布式缓存:将数据库数据放入内存中,提高查询效率,应对高并发
分布式搜索:海量数据的查询搜索统计分析
消息队列:异步通信,使业务链路变短,缩短响应时间,增强吞吐能力
分布式日志服务:统计存储服务集群的运行日志
系统监控链路追踪:实时监控服务的CPU负载,服务运行情况等
Jenkins:自动化部署微服务,基于docker进行打包生成镜像,基于kubernetes或RANCHER实现自动化部署
分布式架构与单体架构的比较
单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署.
优点:
- 架构简单
- 部署成本低
缺点:
- 耦合度高
分布式架构:根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,成为一个服务
优点:
- 降低服务耦合度
- 有利于升级拓展
缺点:
- 架构非常复杂,运维,监控,部署难度提高
要考虑的问题:
- 服务拆分的粒度如何?
- 服务集群地址维护?
- 服务之间如何实现远程调用?
- 服务健康状态感知?