当前位置: 首页 > 科技观察

终于有人看懂微服务了

时间:2023-03-20 19:36:25 科技观察

01微服务架构简介微服务的概念在近几年并不新鲜,但是近两年随着以容器为核心的新一代应用托管平台的兴起,让微服务焕发了新的活力。传统的单体(Monolithic)应用程序在部署和运行时需要单个服务器拥有大量的内存和其他资源。庞大的单体应用必须将整个应用复制到多台服务器上才能实现水平扩展,扩展性极差;此外,这些应用程序往往更加复杂,各个功能组件紧密耦合,增加了维护和更新的难度。在这种情况下,如果你想单独升级应用的某个功能组件,就会有“一根头发,牵一发而动全身”的烦恼。在微服务架构中,传统庞大的单体应用被拆分成细小的模块化服务,每个服务围绕特定的业务领域构建。不同的微服务可以用不同的编程语言编写,甚至可以使用完全不同的工具进行管理和部署。与单体应用程序相比,微服务组织得更好、更小、耦合更松散,并且可以独立开发、测试和部署。由于微服务可以独立发布,因此修复错误或添加新功能所需的时间要少得多,并且可以更高效地将更改部署到生产中。此外,由于微服务很小且无状态,因此它们更容易扩展。一般来说,微服务通常具有以下特征:以单个业务或域为模型。每个微服务实现自己的业务逻辑并包含独立的持久数据存储。每个微服务都有一个单独发布的API。每个微服务都可以独立运行。每个微服务都是独立的,并且与其他服务松散耦合。每个微服务都可以独立升级、回滚、放大和缩小。02微服务架构的主要类型目前在微服务架构领域有各种微服务治理框架,如SpringCloud、Istio等,这些类型的微服务架构都符合上一节介绍的微服务架构的特点,但它们的实现方式不同:有的是通过代码入侵实现的,有的是通过使用代理实现的。在Kubernetes出现和普及之前,微服务架构的实现需要通过SpringCloud等代码入侵方式实现,即在应用的源码中引用微服务架构的治理组件。Kubernetes出现后,我们可以将容器化应用之间的路由和安全工作交给Kubernetes。可以实现代码的功能。这种无代码的微服务架构(如Istio)越来越受到业界和客户的青睐。03企业实施微服务架构的好处和原则从技术角度来看,实施微服务的企业一般有以下好处:更快的应用部署:微服务比传统的单体应用要小得多。较小的服务减少了修复错误所需的时间。微服务独立发布,可以快速添加、测试和发布新功能。快速应用程序开发:微服务由小团队开发和维护。每个小团队最多10人,合理的团队规模是5-7人,即“doublepizzateam”(亚马逊在2012年提出这个概念,意思是5-7个人可以吃两个pizza刚好够饱)。降低应用代码复杂度:由于微服务比庞大的单体应用要小得多,这意味着每个微服务的代码量是可控的,这使得代码修改变得容易。应用程序易于扩展:微服务通常是独立部署的。每个服务都可以根据服务所承受的负载灵活地进行扩容和缩容。系统可以为高流量的业务分配更多的计算、存储和网络资源,实现资源的按需分配。虽然微服务的优势显而易见,但为了保证微服务在企业中的顺利实施,通常会遵循一些原则和最佳实践:IT团队重组为DevOps团队:微服务团队负责整个生命周期从开发到运营的管理。DevOps团队可以按照自己的步调管理团队成员和产品,并控制自己的步调。将服务打包成容器:通过将应用打包到容器中,形成标准的交付物,大大提高效率。使用弹性基础架构:在PaaS上部署微服务,而不是传统的虚拟机,例如OpenShift集群。持续集成和交付流水线:通过流水线打通从开发到运维的全流程,有利于微服务的落地。了解了微服务对于企业数字化转型的意义之后,我们再来看看PaaS、DevOps和微服务的关系。04PaaS、DevOps、微服务的关系PaaS、DevOps、微服务的概念很早就出现了。广义的微服务和DevOps的构建包括人、流程、工具等方面。IT厂商提供的微服务和DevOps,主要是指工具层面的实施和流程咨询。在Kubernetes和容器普及之前,我们也可以通过虚拟机实现微服务和DevOps(CI/CD),但是速度比较慢,所以普及度不高(想象一下用x86虚拟化实现中间件集群效率的弹性伸缩).正是容器的出现,为PaaS和DevOps工具的实施提供了非常好的承载平台,才使得容器云平台在近两年蓬勃发展。这就像4G(2014年出现)和微信(2011年出现)的关系。3G时代,流量资费更贵,人们对微信语音视频聊天不太感兴趣;4G时代,网速大幅提升,资费大幅下降,微信等社交、网络支付工具应运而生并大行其道。容器引擎让容器更具可操作性和可移植性,Kubernetes让容器更适合企业级使用。OpenShift作为IT行业优秀的企业级容器云平台,已经成为DevOps和微服务的新一代平台。OpenShift基于容器技术和Kubernetes,提供软件定义网络、软件定义存储、权限管理、企业级镜像仓库、统一入口路由、持续集成流程(S2I/Jenkins)、统一管理控制台、监控日志等功能形成覆盖整个软件生命周期的解决方案。因此,OpenShift本身提供了开箱即用的PaaS功能,也可以帮助客户快速实现微服务和DevOps,并提供相应的企业级服务支持。作者简介:魏新宇,红帽副首席解决方案架构师。拥有丰富的IaaS和PaaS经验,致力于开源解决方案在企业的推广应用。从售前角度领导红帽在金融和汽车行业的多个PaaS项目。曾就职于华为、IBM、VMware。郭跃军目前在VMware担任解决方案工程师。曾在RedHat担任PaaS顾问,在AWS咨询服务团队担任云架构顾问,熟悉私有云和公有云生态。自2015年接触容器技术以来,一直战斗在PaaS建设第一线,参与了多个OpenShift项目的招标、PoC、咨询和实施,帮助多家企业实现数字化转型。本文节选自《OpenShift在企业中的实践:PaaS DevOps 微服务》(第2版),经出版社授权发布。