slot deposit pulsa slot mahjong slot gacor slot gacor slot gacor resmi slot gacor 2025 slot gacor terpercaya slot gacor 2025 slot gacor hari ini slot gacor hari ini slot gacor hari ini
微服务+架构 = 敏捷
17611538698
webmaster@21cto.com

微服务+架构 = 敏捷

资讯 0 6778 2017-01-14 11:54:54

文章导读:
本文为金兰软件技术负责人大苹果(孙爱红)的文章。金兰软件是从事企业大数据研发的美资企业。我们一起看,有着多年企业大数据研发经验的老司机给我们说点啥。


 微服务+ 架构 = 敏捷
 

微服务架构简介


 
1573397208338.jpg


随着业务复杂性的增加、遗留代码及新增业务逻辑代码的不断添加,企业软件也逐渐庞大起来。几年、十几年的项目做下来,代码结构可能已经变得非常难以维护,系统组件之间的耦合性也不像当初设想的那么完美,而更多新的业务需求还在不断的加入进来,甚至新的独立系统也要不断的集成进来。软件研发和维护变得越来越像一个噩梦。

当新技术、新趋势不断涌现时,软件架构也在不断进化,以更好的解决研发和维护过程中出现的这些问题,让软件研发和维护更高效、错误率更低。上世纪80年代软件架构主要是运行在大型机上的事务系统,90年代之后,个人电脑带来了客户机服务器架构,

而进入2000年后,互联网的发展和数据的分布、同步则降低了基于事务的交易系统的核心地位。现如今,移动互联网、终端设备的多样化,则希望软件系统能够更好地适应用户的需求、随时随地的可访问。在这种情形下,更加灵活的微服务(Micro-service)架构出现了。

那么什么是微服务呢?实际上,微服务是可独立运行和部署的专注于更特定的、更集中的业务功能的服务组件。比如说多语言软件中,用于提供语言包功能的微服务、用于日志记录的微服务、用于用户权限认证的微服务等。

我们为什么需要微服务呢?微服务架构能解决我们当前遇到的什么问题?在传统的软件研发中,软件的功能都包含在同一个可执行的软件包中、或者类库、或者依赖于同一个数据库。然后编写完成的软件部署到一个CPU和内存足够大的服务器或者虚拟机上。

对于大多数一般的应用程序来说,这样做就已经足够了。但是,随着系统业务越来越复杂、系统越来越庞大,尤其是企业级应用,系统所需的资源越来越多,有限的CPU和内存会逐渐成为性能的瓶颈。在我做过的很多大型的企业系统中,几年、十几年不断的添加新功能、维护旧功能,系统的性能调优似乎成了后来的主要工作。不断的去优化复杂的数据库存储过程、不断的去重构复杂的程序代码,可是依然不太理想。

这个时候,我们开始想要把复杂的业务逻辑按照功能逐渐剥离出来,让它们有独立的可执行程序、独立的数据库、可以独立的编译打包部署,从而可以为这些独立的可执行程序分配程序运行所需的资源,相互不依赖,减少性能瓶颈。这些独立的微服务可以使用通用的协议,比如RESTful API来进行通信和交互。独立的微服务有很好的可扩展性,当某一个微服务有性能瓶颈时,只需要再多部署一些这样的服务,就能把性能压力分散开。所以,微服务是解决因资源限制而导致系统性能瓶颈的一个有效措施。

这种设计同时也遵循了软件设计上的关注点分离(Separation of Concerns,SOC)的原则。

而从大型软件的研发管理上来说,关注点更集中、可独立部署、执行的微服务,能让团队立即开始一个微服务的研发。从各个微服务起,逐个击破,让大型系统的成功研发、维护更可管理。尤其是在当下DevOps被广泛应用之时,更小单元的微服务能更容易地在DevOps平台上实现自动代码提交、编译、部署和测试。

另外,有了这些微服务组件,整个软件系统可以更容易的部署到云平台上。根据计算资源的需要,可以部署到一个或多个虚拟云平台上。也可以根据业务功能的需要,启动或关闭某一些微服务。所以,这种微服务的架构非常适应当前的云计算环境。

在这一篇文章中,我们简单介绍了微服务的背景知识、为什么需要使用微服务。

后面我会分三个部分给大家阐述。第二部分,将结合实际的案例,来说明微服务设计的原则、基于RESTful的微服务设计等。

在第三部分里,将结合Scrum敏捷模型、DevOps平台,介绍一下微服务是如何应用在这些场景。


作者:孙爱红 (金兰(大连)软件技术公司 技术负责人,21CTO社区CTO俱乐部会员)


评论