微服务技术:体系结构、通信和挑战
2020-10-21刘国志
代 飞,刘国志,李 章,莫 启,李 彤
1.西南林业大学大数据与智能工程学院,昆明650224
2.云南林业职业技术学院继续教育与国际交流学院,昆明650224
3.云南大学软件学院,昆明650091
4.云南农业大学大数据学院,昆明650201
2014年,Fowler 和Lewis 正式提出了微服务的概念[1].微服务是一种新型的架构风格,它提倡将应用程序划分为一组细粒度的服务,服务间采用轻量级的通信机制进行交互,从而为用户提供最终价值[2].通常,这些细粒度的微服务是具有单一职责的小程序,能够被独立地部署、扩展和测试[3-4].
与传统单体架构(monolithic architecture)相比,微服务架构(microservice architecture)具有高维护性、高扩展性、高适应性、去中心化管理、容器化的运行环境等特征,受到了工业界和学术界的大量关注[5-8]并将微服务技术视为云计算的有效补充[9].
由于微服务架构能满足大规模分布式应用期望的可扩展性、可演化性和可维护性等需求,近年来越来越多的云应用向微服务架构迁移[5,10].在国外,Amazon、Netflix、The Guardian、Twitter、PayPal、SoundCloud 等最早开始尝试将云上的软件系统微服务化.在国内,腾讯、百度、京东、淘宝、360 搜索等也陆续开始将软件系统向微服务架构迁移.例如,腾讯的微信系统[6]包含3 000 多个微服务,分布式地运行20 000 多个机器上[11].Netflix 的在线服务系统使用了大约500 个微服务,每天涉及50 亿个服务交互[12].Amazon 每个页面涉及100∼150 个微服务的调用[13].根据国际数据公司预测:到2021年,云平台上80%的应用程序将使用微服务技术开发[14].
本质上,微服务的服务化思想源于面向服务架构(service oriented architecture,SOA)[14],但与SOA 相比,微服务存在以下显著不同的3 个方面:……p>
