【云驻共创】华为云大咖带你玩转微服务架构
前言
随着数字化转型的浪潮不断涌进,无论是各行业巨头,还是中小微企业都面临这数字化转型所带来的的未知机遇与挑战。在这高速发展的互联网时代,云计算的兴起为众多行业的数字化转型提供了推力,也提升了企业数字化转型的进程,在此期间也催生除了更多技术的发展,微服务架构,云原生领域更是进入火箭式发展阶段。
虽然云原生概念的产生已经由来已久,最早由Pivotal 公司的 Matt Stine 提出,但在不断的发展过程中企业或社区对云原生的定义、云原生架构的理解众说纷纭,那么到底什么是云原生?
Pivotal公司的Matt Stine于2013年首次提出云原生(CloudNative)的概念;2015年,云原生刚推广时,Matt Stine在《迁移到云原生架构》一书中定义了符合云原生架构的几个特征:12因素、微服务、自敏捷架构、基于API协作、扛脆弱性;到了2017年,Matt Stine在接受InfoQ采访时又改了口风,将云原生架构归纳为模块化、可观察、可部署、可测试、可替换、可处理6特质;而Pivotal最新官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器。
一 企业应用架构的演进过程
微服务是服务架构演进的产物,在历经单体架构、垂直架构、面向服务的架构(SOA)之后,微服务架构(MSA)可视为SOA架构的分布式实现方式。随着业务发展与需求不断增加,单体应用功能愈发复杂,应用迭代效率由于集中式研发、测试、发布、沟通模式而显著下滑。
1.1 单体架构
单体应用的集成非常简洁,IDE集成开发环境和其他工具都擅长开发一个简单应用;单体应用易于调试,由于一个应用包含所有功能,所以只需要简单运行此应用即可进行开发测试,单体应用易于部署,只需要把应用打包,拷贝到服务器端即可;通过负载均衡器,运行多个服务实例,单体应用可以轻松实现应用扩展。
1.2 SOA架构
面向服务的架构,SOA的核心主体是服务,其目标是通过服务的流程化来实现业务的灵活性。服务就像一堆“元器件”,这些元器件通过封装形成标准服务,它们有相同的接口和语义表达规则。但服务要组装成一个流程和应用,还需要有效的“管理”,包括如何注册服务、如何发现服务、如何包装服务的安全性和可靠性,这些就是SOA治理。SOA治理是将SOA的一堆元器件进行有效组装。这是形成一个“产品”的关键。否则那些永远是一堆元器件,而无法形成一个有机整体。
完整的SOA架构由五大部分组成:基础设施服务、企业服务总线、关键服务组件、开发工具、管理工具等。
1.3 微服务架构
微服务架构是一种使用一系列粒度较小的服务来开发单个应用的方式;每个服务运行在自己的进程中;服务间采用轻量级的方式进行通信(通常是HTTP API);这些服务是基于业务逻辑和范围,通过自动化部署的机制来独立部署的,并且服务的集中管理应该是最低限度的,即每个服务可以采用不同的编程语言编写。使用不同的数据存储技术。
微服务架构已经不是一个新概念了,很多业界前沿互联网公司的实践表明,微服务是一种渐进式的演进架构,是企业应对业务复杂性,支持大规模持续创新行之有效的架构手段。
二 微服务架构信息
2.1 微服务定义
- 微服务架构是一种架构模式, 将单体应用划分成- -组小的服务,通过服务之间互相协作,共同实现系统功能。
- 每个服务运行在其独立的进程中,服务间采用轻量级的通信机制协作(通常是基于Restful API )。
- 每个服务都围绕着具体业务进行构建,由独立的小团队负责设计、开发、测试,并可以独立部署到生产环境。
2.2 微服务的特征及界定
2.2.1 微服务特征
- 小:微服务架构通过对业务领域的分级及建模,应该将复杂的应用拆分为小而专一,耦合度低且高度自治的一组服务,小的指标可以从代码量,团队大小,服务特征等来进行衡量,例如团队规模,独立业务但愿能够独立的开发和演进,团队自治一般不建议超过10如,保持高效的沟通协作,服务职责单一,单一应用应该保持高内聚低耦合。
- 独:独立的进程,单体应用中,整个系统运行在一个进程中,在微服务架构中,应用由多个服务组成,每个服务都是一个具有高度自治的独立业务实体,其运行在单独的一个进程中。
- 轻:轻量级通讯机制,采用轻量级通讯机制,与变成语言无关,与平台无关的协作方式,例如REST,其通讯基于HTTP的JSON文本,发送接受或对响应内容的解析过程与语言无关。
- 松:松耦合的交付模式,即在服务的交付过程中,开发、测试即部署过程在不同服务之间可以谁相互不影响的。每个服务都是一个独立单元,当某个服务改变,对其他服务不会造成影响。
2.2.2 如何界定微服务
- 多小算小:代码行数?重写时间?跟语言、技能相关,都不合适亚马逊认为:由2-Pizza团队端到端负责一个或1组服务,大小是合适的。
- 区别于传统单体应用:后者各个模块、组件或动态库是集成在一个大进程中运行的。
- 区别于传统SOA架构,后者是基于重型总线ESB、Centralized Governance集中管控的架构。
- 每个微服务可独立编译(无二进制接口依赖),独立部署(无部署顺序依赖),独立运行(无启动顺序依赖)。
2.3 微服务架构与单体架构
单体架构意味着代码过耦合。如果其中某个模块存在问题,那么整个系统将崩溃,导致用户无法使用。整个系统仅仅因为一个小小的错误导致整体无法使用,这是非常危险的。
另一方面,与单体架构不同,微服务体系结构由多个微小的服务组成,服务之间通过相应的API进行通信。由于每个服务代表了独立的功能,因此可以针对某个服务进行独立更新、部署和扩展,而不影响其他的微服务模块。
2.4 微服务架构与SOA架构
SOA主要解决的场景是针对系统集成公司需要统一调用不同组件提供的服务;强调对ESB(企业服务总线)的使用,企业级,自顶向下实施;服务由多个子系统组成,粒度大;企业服务总线,集中式的服务架构;集成方式复杂;相互依赖,部署复杂。
MicroService更加强调服务拆分的粒度和单独运维管理。不在强调堆ESB的使用,甚至去中心化(ESB相当于中心化的节点)的操作,团队级,自底向上开展实施;一个系统被拆分成多个服务,粒度细;无集中式总线,松散的架构;集中方式简单;服务能独立部署。
2.5 微服务架的优势与挑战
2.5.1 优势
- 服务模块边界清晰:微服务强调模块机构(REST接口调用),这对大型团队非常重要。
- 支持独立部署:简单服务更容易部署,由于服务是自治的,出现问题之后不会引起系统崩溃。
- 允许技术多样性:有了微服务,你可以混合使用多种编程语言、开发框架和数据存储技术。
2.5.2 挑战
- 分布式难度大:分布式系统编程难度更大,远程调用更慢且总存在失败风险。
- 需处理分布式系统的一致性:对于分布式系统来说,保持一致性非常困难,意味着大家都要处理一致性。
- 增加运维复杂性:需要一个成熟的运维团队(机制)来管理大量需要频繁部署的服务。
三 典型微服务框架介绍
3.1 Spring Cloud
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。
3.2 核心概念
- 服务注册,就是将提供某个服务的模块信息(通常是这个服务的ip和端口)注册到1个公共的组件上去(比如: zookeeper\consul),暴露服务自身状态及访问协议等信息。
- 服务发现,就是新注册的这个服务模块能够及时的被其他调用者发现。不管是服务新增和服务删减都能实现自动发现。
3.3 微服务引擎CSE
微服务引擎(Cloud Service Engine)是用于微服务应用的云中间件,为用户提供注册发现、服务治理、配置管理等高性能和高韧性的企业级云服务能力;CSE可无缝兼容SpringCloud、ServiceComb等开源生态;用户也可结合其他云服务,快速构建云原生微服务体系,实现微服务应用的快速开发和高可用运维。
3.4 CSE功能介绍
选择一个完善的微服务平台,能够帮助企业发挥微服务的最大价值,选择一个开放的微服务平台,能够帮助企业构建微服务生态圈。华为云CSE引擎包含了微服务SDK、一系列的开发工具以及一站式微服务应用管理平台,无需构建和维护Eureka,Consul等开源软件,Spring Cloud应用无需修改代码,使用spring-cloud-huawei轻松接入CSE,提供用户友好的配置管理、服务治理、安全认证功能。同时还有专业的微服务解决方案团队,提供一站式解决方案支持,让企业纵享微服务带来的优点,无需关注背后的技术复杂性。
3.5 CSE功能组件与Sping Cloud框架的关系
在微服务框架中,服务注册与发现在Spring Cloud的实现为Netflix Eureka和Consul,在CSE中为服务中心;负载均衡在Spring Cloud中的实现为Netflix Ribbon,Spring Cloud Loadbalancer,CSE实现兼容社区版本,业务代码不需要修改;配置管理在Spring Cloud中为config center,consul config,在CSE中为配置中心,业务也无需修改代码;服务网关在Spring Cloud中为Zuul,Spring Cloud Gateway,CSE中兼容开源使用方式,业务代码也不用进行任何修改;链路跟踪在Spring Cloud中Spring Cloud sleuth,在CSE中也兼容开源版本业务无需修改。
四 华为云应用管理与运维服务
4.1 华为云应用管理与运维服务平台功能框架
应用管理与运维平台 ServiceStage ServiceStage是面向企业的应用管理与运维平台,提供应用开发、构建、发布、监控及运维等一站式解决方案。提供Java、Go、PHP、Node.js、Docker、Tomcat等运行环境,支持微服务应用、Web应用以及通用应用的托管与治理,让企业应用上云更简单。
4.2 管理与运维服务平台流程
ServiceStage是一个应用托管和微服务管理平台,可以帮助企业简化部署、监控、运维和治理等应用生命周期管理工作。ServiceStage面向企业提供微服务、移动和Web类应用开发的全栈解决方案,帮助企业数字化快速转型。
4.3 ServiceStage支持对应用的全什么周期管理
应用管理与运维平台(ServiceStage)是面向企业的应用管理与运维平台,提供应用开发、发布、部署、监控与运维等一站式解决方案。支持Java、Go Chassis、Node.js、Docker、Tomcat等运行环境。支持Apache ServiceComb Java Chassis(Java Chassis)、Spring Cloud、Dubbo、Mesher服务网格等微服务应用,让企业应用上云更简单。
ServiceStage主要包含如下能力:
- 开发:支持SpringCloud、ServiceComb、Dobbo等微服务框架及,
- 应用管理:支持应用生命周期管理、环境管理。
- 微服务应用接入:支持Java Chassis、Go Chassis、Spring Cloud、Dubbo微服务框架;支持Mesher服务网格。配合微服务引擎可实现服务注册发现、配置管理和服务治理。
- 分布式事务管理:支持非侵入式/侵入式事务;支持MySQL、PostgreSQL、。
- 应用运维:通过日志、监控、告警支持应用运维管理。
五 课程体系
华为云为方便开发者,提供了专业的认证体系,助理数字产业人才生态发展,云是ICT产业的未来,也是企业数字化转型的底座,开发者是产业发展的灵魂,是业务创新的源头,是技术发展的引领者。为了更好地服务千万开发者,华为云推出开发者认证,真正让开发者在云上作业, 懂开发会开发,与开发者共成长。
提供专业级(HCCDE),工作级(HCCDP),入门级(HCCDA)来基于开发者和工作需求分层分级。
同时华为云开发者认证体系,贴合数字产业生态战略,在云原生、人工智能、大数据、物联网、区块链、移动开发、数据库等技术领域建立赋能体系及认证标准,与人社部、工信部颁布的新兴职业能力标准相匹配,提供清晰的开发者成长路径。
华为云云原生入门级开发者认证内容,包含HCCDA,HCCDP,HCCDE等,内容涵盖云原生架构,容器,kubernetes,Istio,DevSecOps等解决方案,在进阶课程中会有机遇场景的深入理解Kubernetes常用模块业务架构,熟悉容器化改造流程,可以基于华为云CCE,CCI,ASM等服务,构造相服务的选型、设计、实践能力,可以端到端完成业务云原生化升级。
华为云云原生入门开发者认证流程包含在线学习,实验练习,理论考试,实验考试,获取证书。
面向高校学生、个人开发者、企业开发及运维人员,华为云即将推出云原生入门级开发者认证(HCCDA - Cloud Native) ,从开源组件到华为云上服务的介绍,使您掌握云原生的核心理念和架构,具备基本开发实践能力。为帮助开发者学习并顺利通过认证,华为云开发者学堂上线“云原生入门级开发者认证人才计划”赋能学习活动,收获知识干货。
六 总结
在云计算、大数据、物联网等技术的驱动下,越来越多的企业正在加速业务的数字化转型。为了应对市场飞速变化的需求,企业不得不加快应对节奏。
CSE充分借鉴公司内部多个大型系统微服务化的构建经验,将多年来对企业级应用微服务化过程中积累的最佳实践都构建其中,成熟稳定,降低了企业级应用微服务化的门槛。
在云上使用CSE微服务引擎,用户无需关心自己业务之外的微服务基础设施,保证系统整体稳定性。同时微服务部署即用,管理、治理全部开箱即用,还可以获得开发时期的指导和帮助,以及后续技术发展的最新信息。同时配合ServiceStage,向提供应用开发、构建、发布、监控及运维等一站式解决方案。提供Java、Go、PHP、Node.js、Docker、Tomcat等运行环境,支持微服务应用、Web应用以及通用应用的托管与治理,让企业应用上云更简单。
本文整理自华为云社区【内容共创】活动第15期。
https://bbs.huaweicloud.com/blogs/345822
任务3:华为云大咖带你玩转微服务架构
- 点赞
- 收藏
- 关注作者
评论(0)