完整的微服务架构图
注册中心
配置中心
服务集群
服务网关
分布式缓存
分布式搜索
数据库集群
消息队列
分布式日志服务
系统监控链路追踪
Jenkins
docker
k8s
技术栈
微服务治理:
注册发现、远程调用、负载均衡、配置管理、网关路由、系统保护、流量控制、服务授权、熔断降级、分布式事务、TCC模型、AT模型、Seata、XA模式、Saga模式
Eureka、Nacos、OpenFeign、Gateway、Sentinel
缓存技术:
缓存穿透、缓存雪崩、OpenResty、缓存数据同步、Nginx本地缓存、多级缓存分层、Redis数据结构、Redis持久化、Redis分片集群、Lua脚本、Redis主从复制、Redis主从集群、哨兵机制、SpringDataRedis、Canal数据同步
异步通信技术:
MQ消息模型、SpringAMQP、消息堆积问题、消息可靠性、仲裁队列、延迟队列、镜像集群、数据持久化
搜索技术:
DSL语句、ES集群、RestAPI、集群脑裂、竞价排名、自动补全、聚合统计、拼音分词、地理坐标、HeighLevelClient、拼音搜索、分片集群
DevOps:
Dockerfile、DockerCompose、GrayLog、Jenkins、SkyWalking、Docker使用、Kubernetes
分布式架构的特点
1.耦合度低
2.有利于服务升级拓展
考虑的问题:
1.服务拆分粒度如何。
2.服务集群地址如何维护。
3.服务之间如何实现远程调用。
4.服务健康状态如何感知。
单一职责:微服务拆分粒度更小,每一个微服务都应对唯一的业务能力,做到单一职责,避免重复业务开发。
面向服务:微服务对外暴露业务接口。
自治:团队独立、技术独立、数据独立、部署独立。
隔离性强:服务调用做好隔离、容错、降级、避免出现级联问题。