首页 > 其他分享 >微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起

时间:2023-05-04 11:04:35浏览次数:47  
标签:服务 部署 系统 单体 顺势 架构 团队


微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_解耦

一、前言 

       作者接触微服务也好久时间了,从零开始构建公司产品的微服务化,目前逐步成型稳定。计划在接下来的时间里,把微服务架构下项目的实践,分门别类的总结汇总,围绕“微服务架构下的核心话题”,与大家分享,希望能够给大家在微服务中带来帮助,助力你更好的了解它,避免走不必要的弯路。

     在接触任何一个新鲜事物初期时,你一定有必要了解它,知道它能给你带来什么、有哪些优势、哪些弊端,最终要搞明白它是否合适你,再决定是否使用它。技术更是如此,这也就是常常所说的技术选型、架构选型,更是作为一个架构师必须衡量考虑的。在当前技术不断革新的趋势下,每天可能都有新的概念、新的体系、新的技术(框架)出现,微服务的出现,纷纷被众多技术人、公司所追捧,仿佛给传统项目的重构、新项目的研发带来了便捷、萌发了希望,但大家都真的了解它么?

   在微服务架构下,各类项目也顺势崛起,作为技术人,貌似不会微服务,都有些不好意思。(调侃一下而已)

   就以下两个方面,带你更好的了解微服务架构体系,明白为什么在微服务架构下各类项目的顺势崛起。

  • 什么是微服务
  • 为什么要使用微服务

 

二、什么是微服务

     微服务的概念,最早由Martin Fowler与James Lewis于2014年共同提出,在近几年才走入大家的视线,引起关注。首先,我们看一下Martin Fowlern在《Microservices》一文是如何给微服务下定义的:

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_单体架构_02

In short, the microservice architectural style  is an approach todeveloping a single application as a suite of small services, each running inits own process and communicating with lightweight mechanisms, often an HTTPresource API. These services are built around business capabilities andindependently deployable by fully automated deployment machinery. There is abare minimum of centralized management of these services, which may be writtenin different programming languages and use different data storage technologies.

单体应用拆分为一组微小的服务,每个微小的服务单独运行,服务间可通过如RESTful API这样轻量级的接口交互,这些服务以业务能力为核心,用自动化部署机制独立部署。这些服务可以用不同语言开发,用不同技术来存储数据。

   以我理解来看,微服务架构的特性如下:

  • 将单体应用进行解耦,按照一定方式(如:业务分类等)拆分为多个微小的服务,微服务间相互交互以完成实际业务流。
  • 微服务间通信方式更轻量化,如:RESTful。
  • 各微服务支持单独部署、单独运行。
  • 各微服务的开发语言不限,可交叉选择不同语言。

    简单来说,微服务其实是从早期的CORBA、COM+等技术,到后来的SOA、RESTful架构,是一种分布式计算思想的延续。

    具体来说,把单体应用拆分为一个一个微小服务,而这些微小服务又不依赖任何服务器,使其可以通过自动化方式独立部署,每个服务可以运行在自己的进程或Docker容器中,通过轻量的通信机制,能够基于业务能力快速构建,动态扩容,实现集中化管理的系统架构。

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_微服务_03

三、为什么要使用微服务

       伴随着互联网系统的爆发、系统的多样化以及系统分层切块的演变,系统变得越来越复杂,调用链也越来越复杂,传统单体系统已经无法再支撑这种变化,因此微服务的思想也就顺应而来,用来解决这种现状。

      传统的单体系统,企业往往需要耗费几个月乃至几年,才能落地一个系统,达到上线的标准。这就给一些小公司的前进带来了瓶颈,没人敢轻易研发、重构一个新的产品,但在现在互联网日益变革的时代,不得不大胆向前尝试,力争在最短的时间内完成一个新的产品。在互联网时代常常要求一周内完成一个功能或小项目,这种不断伸缩的业务形态,不断要求缩短的开发周期,使得我们需要在系统的扩展、伸缩、减低相互影响上做出文章。

    那么,怎么才能达成系统的扩张呢?在Microservice Architecture一文中提到,我们需要将服务进行拆分,拆分为前置服务和业务服务,并在前端新增SLB(Server Load Balance),用一组相同的前置服务组成及其来提供服务。

    而减低各模块、各业务的相互影响,就需要将单体系统按照模块或业务进行拆分,以此来减低其耦合性。

    上面提及到问题,在微服务架构下,给出了一些完美的解决方案。

1.模块服务化

      单体系统,团队在多人协作开发时,往往会存在因代码、设计思路等差异而造成相互影响,相互等待对方的现状,而且系统的庞大也给后期维护带来诸多不便。而微服务最突出的一个特性“解耦”,恰恰解决了这种问题,让系统更加轻量化,便于多人协同开发而互不依赖。

2.独立部署,灵活扩展

    传统的单体架构是以整个系统为单位进行部署,而微服务则是以每一个独立服务(例如:用户服务,文件服务等)为单位进行部署。用下图能够更好的体现:

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_组织架构_04

      左边是单体架构的集群,右边是微服务集群 。

      各个服务都是独立部署,可以根据各自服务的特点进行适当调整,即:根据服务的吞吐量、压力等不同的指标,分别给出不同的部署方案(部署策略),使得资源更加充分合理的使用。这种灵活部署只有微服务架构才能实现。

3.资源的有效隔离

      这是微服务设计的原则之一,就是每一个微服务拥有自己独立的数据源,假如微服务A想要读写微服务B的数据库,只能调用微服务B对外暴露的接口来完成。这样有效避免了服务之间争用数据库和缓存资源所带来的问题。

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_组织架构_05

     如果采用Docker部署,则每一个微服务实例在Docker容器上运行,更加完美的实现了服务器资源(内存、CPU资源等)的有效隔离 。

4.多语言,多选择

     在微服务架构下,因为有了模板服务化,各模块互不依赖的特点,对开发语言的选择就没有统一的要求,完全可以根据企业技术人员情况,不同模块的特点来选择不同的开发语言,让开发变得更加多样化。

5.团队组织架构的灵活

     微服务架构设计的思想,改变了原有的企业研发团队的组织架构。传统的研发组织架构是水平架构,前端有前端的团队,后端有后端的团队,DBA有DBA的团队,测试有测试的团队。

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_组织架构_06

      而微服务架构的设计思想对团队的划分有了一定的影响,使得团队组织架构的划分更倾向于垂直架构,比如用户业务是一个团队来负责,支付业务是一个团队来负责。这种团队组织架构,也更好的协同来完成一个系统。

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_单体架构_07

   当然,上述这种垂直划分只是一个理想的架构,实际在企业中并不会把团队组织架构拆分得这么绝对。

6.组件/框架多样化、成熟化

     伴随着微服务出现,不断膨胀,各类技术组件、框架应用而生,为我们的开发降低了成本,加快了项目的开发周期。这些组件/框架纷纷落地投产,变得更加的稳定成熟。Spring Cloud家族就是一类典型的代表,后续文章将在详细介绍在微服务中的技术选型。

 

     正因为微服务上述这些特性,使得在微服务的影响下,各类项目顺势崛起,为各类中小型软件公司带来了希望。

 

参考:

1.https://microservices.io/index.html


 

欢迎微信扫码下面二维码,关注微信公众号【程序猿技术大咖】,进行更多交流学习!

微服务架构下的核心话题 (一):微服务架构下各类项目的顺势崛起_微服务_08

 

标签:服务,部署,系统,单体,顺势,架构,团队
From: https://blog.51cto.com/xcbeyond/6241908

相关文章

  • oepkgs 社区开放软件包服务正式上线!亮相openEuler Developer Day 2023
    4月21日,中国科学院软件研究所在openEulerDeveloperDay2023(以下简称ODD)上,正式公开开放软件包服务(OpenExternalPackagesService,以下简称oepkgs)。oepkgs官网:https://oepkgs.net/。oepkgs由中国科学院软件研究所、中科南京软件技术研究院、openEuler社区共同发起并提供支持。......
  • 微服务 - Nginx网关 · 进程机制 · 限流熔断 · 性能优化 · 动态负载 · 高可用
    系列目录:微服务-概念·应用·通讯·授权·跨域·限流微服务-集群化·服务注册·健康检测·服务发现·负载均衡微服务-Redis缓存·数据结构·持久化·分布式·高并发本文的前提需要了解一些基础的Linux知识。以下围绕Nginx1.23的网关应......
  • 1-系统架构
    1.系统架构包括什么形式?C/S架构B/S架构2.C/S架构?Client/Server(客户端/服务器)C/S架构的软件或者说系统有哪些呢?QQ(先去腾讯官网下载一个QQ软件,几十MB,然后把这个客户端软件安装上去,然后输入QQ号以及密码,登录之后,就可以和你的朋友聊天了,就可以使用这个软件了。)C/S......
  • 云服务质量评估六大关键点
    从云服务质量评估的角度来说,云服务可以包含一项或多项核心服务和支持服务。核心服务是重点,它能满足用户的关键期望和需要。支持服务也是不可或缺的部分,它能推动和增强核心服务的服务。1、可用性从服务的角度来说,可用性是最重要的参数,它表示一个服务是否存在或者是否立即可用。服务......
  • 24 操作系统的网络架构
    传统的网络架构:三层:核心层、汇聚层、接入层;核心层:高速转发、为多个汇聚层提供连通性,同时为整个网络提供灵活的L3路由网络;汇聚层:提供防火墙、SSL卸载、入侵检测、网络分析等;接入层:ToR交换机,与服务器物理连接;经典的IP网络是逐跳转发数据的,转发数据时,每台路由器都要根据包头的......
  • 开源+实时+数据即服务的架构——唐建法受邀出席2023数据技术嘉年华【干货回顾】
    点击报名假设原料是一个产品公司的SaaS业务系统、一套CRM、一套工单系统、一个内部人事系统,和内部研发管理系统;现在给到你40min的时间,能做出怎样的数据菜肴?如果这里的厨师是Tapdata,那么答案可以是一个实时业务经营看板,也可以是一个运营自动化的流程。如此高效的秘诀是什......
  • 电子商务网站用户行为分析及服务推荐
    #-*-coding:utf-8-*-#代码11-1importosimportpandasaspd#修改工作路径到指定文件夹os.chdir("D:/chapter11/demo")#第一种连接方式fromsqlalchemyimportcreate_engineengine=create_engine('mysql+pymysql://root:[email protected]:3306/test?ch......
  • 从0开始构建一个Oauth2Server服务 <19> Token 编解码
    Token编解码令牌提供了一种通过在令牌字符串本身中编码所有必要信息来避免将令牌存储在数据库中的方法。这样做的主要好处是API服务器能够验证访问令牌,而无需对每个API请求进行数据库查找,从而使API更容易扩展。OAuth2.0BearerTokens的好处是应用程序不需要知道您决定如......
  • 魔兽服务端编译部署NPCBots和机器人模块教程
    魔兽服务端编译部署NPCBots和机器人模块教程大家好,我是艾西。在平时自己一个人玩魔兽的时候是不是会比较无聊,因为游戏机制或副本难度自己一个人无法进行快乐的玩耍。今天艾西教大家编译部署NPCBots和Al机器人模块,直接一个人玩魔兽也不孤单首先到GIT去下载ai机器人以及bots模块解压......
  • 魔兽世界服务端自定义添加NPC教程
    魔兽世界自定义NPC教程大家好,我是艾西今天跟大家聊一下自定义NPC,自定义NPC可以添加自己想要售卖的物品以及定价等可以更好的将一个游戏设定以及游戏的拓展性有质的提升creature表是游戏所有生物人物等表格Creature_template是所有生物模板,根据生物模板可以创建很多的生物。我们在某......