微服务(架构)定义
微服务架构,是以专注于单一责任的小型功能模块为基础、通过API集相互通信的方式完成复杂业务系统搭建的一种设计思想。
微服务四个特点(来自马丁.福勒):
- 根据业务模块划分服务种类。
- 每个服务可以独立部署并且互相隔离。
- 通过轻量的 API 调用服务。
- 服务需要保证良好的高可用性。
微服务(架构)优点【相对单体架构】
微服务带来的好处:
- 开发效率更高
- 沟通成本更低
- 响应速度更快
- 迭代周期更短
实施微服务准备工作
从五个方面来谈:
- 业务拆分,体现在设计环节:在设计的时候,要有足够的判断力来合理的规划服务之间的界限。
- 服务治理,底层技术的支持:首先要选一款适合自己实际情况的分布式服务基础框架,对于服务的发现、治理、熔断、降级,都要做好相应的技术准备。
- 自动测试,一定要自动化。微服务一个明显的表象就是随着服务的增多,如果继续沿用传统的测试模式就会遇到瓶颈,为了保证高效的迭代,尽量做到更多的环节实现自动化。
- 自动运维 :微服务拆分之后,每个服务都可以独立部署,进而言之应该是随时随地可以升级。尤其当互联网发展到今天,业务要保持对市场变化的一个高效响应,自动化运维就是提升交付速度的一个重要环节。
- 监控:包括硬件环境、服务状态、系统健康度、接口调用情况、异常的实时告警以及潜在问题的事先预警等等。监控在实施微服务过程中会重要到什么程度呢?一句话:没准备好监控,就不要搞微服务。
微服务不是银弹
“警惕”,微服务不是银弹,
- 远程调用带来的性能损耗
- 强一致性到最终一致性的妥协
- 跨服务的测试更复杂
- 运维工作更具挑战性
- 需要强大的整体规划能力
微服务架构适合应用场景
什么时侯需要采用微服务架构呢,我认为有三种场景可以考虑使用微服务架构:
- 规模大(团队超10人)
- 业务复杂度高(超过5个子模块)
- 需要长期演进(开发、维护周期超半年)