1 什么是微服务
微服务是一种架构风格,就像一盘水饺,一个个小业务都是一个水饺,彼此能够独立。传统系统随着业务需求、bug叠加,就会像滚雪球一样,越滚越大,越来越臃肿;而且不同模块可能用不同的语言、技术更合适,传统的编程模式无法实现。
微服务应时而生,它的特点是:可扩展性(加功能)、模块化(传统的模块化单体应用可能随着项目的迭代模块分层模糊了)、各个模块能够单独开发、部署、扩展、维护。
微服务也有很多缺点:性能略下降、事务问题、跨服务协作、难度大需要全面团队......
微服务适应于复杂的项目,可扩展性要求很强的项目、有一定规模的创业公司(需要不断的迭代业务试错)
2 微服务架构
可参考《MicroServices Patterns》,在这里讲解重点的几个模块。
1)服务发现(Service Discovery):服务注册中心、服务查询、服务监控、数据同步、API Service、取消、更新、获取...
2)服务路由:Routing、Load Balancer、安全、熔断、Error Handling、Monitoring、Tracing、Rate Limit...
3)服务配置:配置服务、配置管理、Admin UI、Config Adapter、Config Refresh.....
4)Circuit Breaker:closed、Open、Half-Open(这个模块其实就是一个调度机制,防止各个模块调用时由于某个模块的故障导致其它模块奔溃)
5)Security
6)服务通信:同步模式、异步模式
7)数据一致性:锁机制(微服务并发量大起来会卡在这)—>Try-Comfirm -Cancel(性能更好,但是三部分代码实现具有一定难度)—>SAGA(异步、主流、不会被锁、可能出现幻读)