原文地址:微服务架构概述
博客地址:blog.720ui.com/html
传统的单体架构,使用三层架构,包括视图表现层、业务逻辑层与数据访问层,其划分的目的是为了更好地规划软件系统的逻辑结构,便于开发与维护。单体架构将整个应用系统视为一个总体,部署在同一个 Web 容器。例如,一个 VR 资讯系统包含资讯模块、话题模块、日报模块、百科模块等多个模块,在单体架构中,全部的功能模块都在同一个应用系统中,而且共同使用一个数据库。数据库
单体架构的好处在于,全部的功能模块都在同一个应用系统中,很是容易开发与测试。可是,随着系统规模的不断扩大,业务需求的不断迭代,系统功能的持续增长,传统的单体架构面对的问题也愈来愈多,主要体如今几个方面:编程
随着敏捷开发、持续交付、虚拟化技术、DevOps 理论的实践,微服务架构应运而生,并逐渐使得应用架构朝着高可用性、可扩展性、可伸缩性发展的方向演进。ThoughtWorks 公司的首席科学家 Martin Fowler 对微服务进行了描述,他说到:“微服务是一种将单个应用划分红许多小的服务来构建软件的架构模式。每一个服务运行在本身的进程中,服务与服务间采用轻量级的通讯机制互相沟通(一般是基于 HTTP 协议的 RESTful API)。每一个服务都围绕着具体业务和各自独立的自动化部署机制构建而来。每一个服务须要极少的集中管理,所以可使用不一样的编程语言以及不一样的存储技术。”。Martin Fowler 还列举了微服务的九个特征,包括经过服务实现组件化、围绕业务能力进行组织、基于产品而不是项目、智能端点与哑管道、去中心化治理、去中心化数据管理、基础设施自动化、为故障而生、演进的设计。若是对Martin Fowler 的微服务描述感兴趣,能够阅读 martinfowler.com/articles/mi…微信
请读者思考,微服务的拆分粒度多小,才能算是“微”?通常状况下,拆分粒度应该保证微服务具备业务的独立性与完整性,所以微服务的拆分围绕业务模块进行拆分。那么,这里将 VR 资讯系统进行服务拆分,分为资讯系统、话题系统、日报系统、百科系统四个微服务系统,每一个微服务独立使用一个数据库。架构
微服务带来的价值,主要体如今几个方面:并发
微服务不是银弹,它也带来了一些技术的复杂度。所以,咱们须要思考与解决分布式的复杂性、事务的一致性、服务的管理与运维、服务的自动化部署等解决方案。运维
总结下,随着系统规模的不断扩大,业务需求的不断迭代,系统功能的持续增长,传统的单体架构面对的问题也愈来愈多。而且互联网产品需求变化快、用户量大,传统的单体架构显得力不从心。而随着敏捷开发、持续交付、虚拟化技术、DevOps 理论的实践,微服务架构取代了传统的单体架构,将单个应用划分红许多小的服务,服务与服务间采用基于 HTTP 协议的 RESTful API 通讯。在收获微服务带来的价值的同时,须要解决微服务带来的一些技术的复杂度问题。编程语言
(完)分布式
更多精彩文章,尽在「服务端思惟」微信公众号!
微服务