
课程咨询: 400-996-5531
投诉建议: 400-111-8989
认真做教育 专心促就业
微服务架构开发随着互联网的不断发展而被越来越多的程序员掌握,今天我们就通过案例分析来简单了解一下,微服务架构定义与优劣势分析。
1、什么是微服务
维基百科定义:
微服务(Microservices)是一种软件架构风格,它是以专注于单一责任与功能的小型功能区块(SmallBuildingBlocks)为基础,利用模块化的方式组合出复杂的大型应用程序,各功能区块使用与语言无关(Language-Independent/Languageagnostic)的API集相互通信。
AWS的定义:
微服务是一种开发软件的架构和组织方法,其中软件由通过明确定义的API进行通信的小型独立服务组成。这些服务由各个小型独立团队负责。微服务架构使应用程序更易于扩展和更快地开发,从而加速创新并缩短新功能的上市时间
2、微服务有哪些优势与劣势(问题)
优势:
应用小,可快速编译部署
单个微服务维护性变高,修改容易,因为每个团队独立负责一块功能。新功能交付变快,可以快速开发交付
扩展性变高,根据业务规模可以随时缩减/增加服务器规模
可靠性变强,可以部署很多独立的服务
业务解耦,按照业务边界拆分为多个独立的服务模块
提升研发效率,业务拆分后,服务模块变小,在一个团队内就可以独立编写、测试、发布,加快研发效率。
微服务有这么多优势,那微服务是“银弹”吗?微服务不是银弹,它带来了很多优势,同时也带来了很多劣势(问题)。
劣势(问题):
整体复杂度变高,从哪些方面来管理这种复杂度?
运维变得复杂:微服务变多,怎么监控所有微服务,保证服务稳定?出了问题,怎么定位问题?
服务管理:微服务变多,管理复杂度变高,治理变得复杂
测试方面的挑战:你需要结合其他的微服务来进行集成测试
分布式问题:分布式数据一致性、分布式事务
服务保障:一个服务出了问题,如何才能不影响其他服务?
根据上面微服务定义,这些服务都是由小型独立团队负责,那团队怎么划分?公司组织架构如何调整才能适应微服务的架构发展?这也给组织管理带来了挑战。
还有微服务的“微”,多“微”才是好的“微”?也就是微服务怎么划分,如何确定边界?
等等这些都是微服务面临的问题和挑战。
题外话:任何问题都有正反面,就像一枚硬币一样,所以思考问题要多样化,不能只思考一点。
3、总结
根据以上简略分析,微服务的实施并不是一蹴而就的事情,是随着业务的发展而发展,是一种逐渐演进的模式。
微服务架构是为了适应业务的快速变化,产品的快速迭代、交付、反馈和修改,团队成员膨胀而提出的一种架构解决方案。
微服务的优劣分析可以看出,微服务并不是“银弹”,它给开发和产品带来好处的同时,本身也会带来一系列的问题。如何克服这些问题,才是实施好微服务的关键所在。
上面提到的劣势(问题),也需要建立运维开发基础设施来加以保障才能让微服务顺利运行。比如CI/CD,监控体系,配置中心等等,那DevOps是否也要同步建设?
所以成功实施微服务并不是一件孤立的事情,它关联很多其他事情,架构、工具到团队协同,需要同步建设,它是一个系统工程。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。