服务端指南 服务端概述 | 微服务架构概述

栏目: 后端 · 发布时间: 7年前

内容简介:服务端指南 服务端概述 | 微服务架构概述

传统的单体架构,使用三层架构,包括视图表现层、业务逻辑层与数据访问层,其划分的目的是为了更好地规划软件系统的逻辑结构,便于开发与维护。单体架构将整个应用系统视为一个整体,部署在同一个 Web 容器。例如,一个 VR 资讯系统包含资讯模块、话题模块、日报模块、百科模块等多个模块,在单体架构中,所有的功能模块都在同一个应用系统中,并且共同使用一个数据库。

服务端指南 服务端概述 | 微服务架构概述

单体架构的好处在于,所有的功能模块都在同一个应用系统中,非常容易开发与测试。但是,随着系统规模的不断扩大,业务需求的不断迭代,系统功能的持续增加,传统的单体架构面对的问题也越来越多,主要体现在几个方面:

  • 开发效率变低。所有的功能模块都在同一个应用系统中,团队成员需要共同维护同一套工程代码,势必增加了相应的沟通成本与协作成本。
  • 维护成本增加。业务需求的不断迭代与系统功能的持续增加,使得这个应用系统变得越来越庞大,越来越复杂。一方面,开发人员在开发功能与修复缺陷的成本变高,另一方面,新加入团队的成员也需要花费巨大的精力去熟悉这个巨无霸的业务系统。
  • 部署影响变大。系统规模的不断扩大,带来的另外一个后果就是构建时间变长。每次新功能版本发布,或修复缺陷重新部署,这个过程将导致应用系统不可用,相当于系统宕机,影响面较大。
  • 可扩展性较差。应用系统作为一个业务强耦合的整体,无论是水平扩展还是垂直扩展,都存在扩展性问题。
  • 技术选型成本高。单体架构技术选型相对而言比较单一,很难平滑替换新的技术。

随着敏捷开发、持续交付、虚拟化技术、DevOps 理论的实践,微服务架构应运而生,并逐渐使得应用架构朝着高可用性、可扩展性、可伸缩性发展的方向演进。ThoughtWorks 公司的首席科学家 Martin Fowler 对微服务进行了描述,他说到:“微服务是一种将单个应用划分成许多小的服务来构建软件的架构模式。每个服务运行在自己的进程中,服务与服务间采用轻量级的通信机制互相沟通(通常是基于 HTTP 协议的 RESTful API)。每个服务都围绕着具体业务和各自独立的自动化部署机制构建而来。每个服务需要极少的集中管理,因此可以使用不同的编程语言以及不同的存储技术。”。Martin Fowler 还列举了微服务的九个特征,包括通过服务实现组件化、围绕业务能力进行组织、基于产品而不是项目、智能端点与哑管道、去中心化治理、去中心化数据管理、基础设施自动化、为故障而生、演进的设计。如果对Martin Fowler 的微服务描述感兴趣,可以阅读 https://martinfowler.com/articles/microservices.html。

请读者思考,微服务的拆分粒度多小,才能算是“微”?一般情况下,拆分粒度应该保证微服务具有业务的独立性与完整性,因此微服务的拆分围绕业务模块进行拆分。那么,这里将 VR 资讯系统进行服务拆分,分为资讯系统、话题系统、日报系统、百科系统四个微服务系统,每个微服务独立使用一个数据库。

服务端指南 服务端概述 | 微服务架构概述

微服务带来的价值,主要体现在几个方面:

  • 每个微服务易于开发和维护,便于沟通与协作,很适合小团队敏捷开发与持续交付。
  • 每个微服务职责单一,高内聚、低耦合。同时,每个微服务能够独立开发、独立运行、独立部署。
  • 每个微服务之间是独立的,如果某个服务部署或者宕机,只会影响到当前服务,而不会对整个业务系统产生影响。
  • 每个微服务可以随着系统规模的不断扩大,面对海量用户和高并发,独立做水平扩展与垂直扩展。
  • 每个微服务可以使用不同的编程语言以及不同的存储技术,使得我们更容易尝试新的技术。此外,对单个服务进行业务重构,也不会面临很大的业务负担与技术债卷。

微服务不是银弹,它也带来了一些技术的复杂度。因此,我们需要思考与解决分布式的复杂性、事务的一致性、服务的管理与运维、服务的自动化部署等解决方案。

总结下,随着系统规模的不断扩大,业务需求的不断迭代,系统功能的持续增加,传统的单体架构面对的问题也越来越多。并且互联网产品需求变化快、用户量大,传统的单体架构显得力不从心。而随着敏捷开发、持续交付、虚拟化技术、DevOps 理论的实践,微服务架构取代了传统的单体架构,将单个应用划分成许多小的服务,服务与服务间采用基于 HTTP 协议的 RESTful API 通信。在收获微服务带来的价值的同时,需要解决微服务带来的一些技术的复杂度问题。

(完)


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

ACM国际大学生程序设计竞赛题解

ACM国际大学生程序设计竞赛题解

赵端阳//袁鹤 / 电子工业 / 2010-7 / 39.00元

随着各大专院校参加ACM/ICPC热情的高涨,迫切需要有关介绍ACM国际大学生程序设计竞赛题解的书籍。《ACM国际大学生程序设计竞赛题解(2)》根据浙江大学在线题库的部分题目,经过分类、筛选、汇编,并进行了解答(个别特别简单或者特别复杂的题目未选择),比较详细地分析和深入浅出地讲解了解题的方法和用到的算法。题目的类型包括基础编程、模拟、字符串处理、搜索、动态规划、回溯、图论、几何和数学题。 ......一起来看看 《ACM国际大学生程序设计竞赛题解》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具