2021.05产品说明-云原生总体篇用友网络科技股份有限公司2版权未经用友集团的书面许可,本产品说明任何整体或部分的内容不得被复制、复印、翻译或缩减以用于任何目的。本产品说明的内容在未经通知的情形下可能会发生改变,敬请留意。请注意:本产品说明的内容并不代表用友所做的承诺。用友网络科技股份有限公司3目录版权...................................................................................................................................................................2第一章云原生.......................................................................................................................................71.1云原生和云原生应用.................................................................................................................71.2DevOps.........................................................................................................................................81.3容器化.........................................................................................................................................91.4微服务治理...............................................................................................................................101.4.1微服务框架.......................................................................................................................111.4.2Saga框架...........................................................................................................................111.4.3服务注册中心...................................................................................................................111.4.4配置中心...........................................................................................................................121.4.5全链路监控.......................................................................................................................121.5中间件.......................................................................................................................................131.5.1调度任务中心...................................................................................................................131.5.2分布式缓存(redis).............................................................................................................131.5.3分布式消息服务器(MQ)...................................................................................................141.6OpenAPI....................................................................................................................................14第二章云原生整体架构.....................................................................................................................15第三章产品新增特性.........................................................................................................................17第四章产品特性.................................................................................................................................204.1容器化.......................................................................................................................................204.1.1容器服务...........................................................................................................................204.1.2容器调度...........................................................................................................................204.1.3统一接入...........................................................................................................................204.1.4容器网关...........................................................................................................................204.1.5弹性伸缩...........................................................................................................................214.1.6服务自愈...........................................................................................................................214.1.7服务健康检查...................................................................................................................21用友网络科技股份有限公司44.1.8环境变量管理...................................................................................................................214.1.9持久存储管理...................................................................................................................224.1.10容器网络管理...................................................................................................................224.1.11容器调试管理...................................................................................................................224.1.12计算资源池管理...............................................................................................................224.1.13镜像仓库...........................................................................................................................224.2DevOps.......................................................................................................................................234.2.1产品线...............................................................................................................................234.2.2流水线...............................................................................................................................234.2.3部署管理...........................................................................................................................234.2.4版本管理...........................................................................................................................264.2.5代码构建...........................................................................................................................264.2.6持续集成...........................................................................................................................264.2.7持续发布...........................................................................................................................274.2.8升级回滚...........................................................................................................................274.2.9蓝绿发布...........................................................................................................................274.2.10灰度发布...........................................................................................................................274.3微服务治理...............................................................................................................................274.3.1服务注册中心...................................................................................................................284.3.2限流服务...........................................................................................................................284.3.3RPC框架............................................................................................................................284.3.4异步化编程框架...............................................................................................................294.3.5数据一致性.......................................................................................................................294.3.6异步调用可靠性消息.......................................................................................................304.3.7服务心跳检查...................................................................................................................304.3.8服务容灾...........................................................................................................................304.3.9配置中心...........................................................................................................................314.3.10全链路监控.......................................................................................................................324.4运维管理...................................................................................................................................32用友网络科技股份有限公司54.4.1监控大盘...........................................................................................................................324.4.2变更大盘...........................................................................................................................324.4.3告警中心...........................................................................................................................324.4.4产品管理...........................................................................................................................334.4.5日志中心...........................................................................................................................334.5微服务化...................................................................................................................................334.6中间件.......................................................................................................................................344.6.1调度任务...........................................................................................................................344.6.2分布式缓存(redis).............................................................................................................344.6.3分布式消息服务器(RabbitMQ)........................................................................................34第五章产品范围.................................................................................................................................355.1业务员的错误中心...................................................................................................................355.2集团管理员的错误处理中心...................................................................................................355.3开发者中心...............................................................................................................................35第六章产品主要功能.........................................................................................................................386.1云原生后总体交互原则...........................................................................................................386.2跨微服务出错后的交互...........................................................................................................386.2.1错误实时提示...................................................................................................................386.2.2业务员的错误中心...........................................................................................................396.2.3单据列表错误显示...........................................................................................................406.2.4单据卡片错误显示...........................................................................................................406.2.5集团管理员的微服务处理中心........................................................................................416.2.6错误追溯与处理...............................................................................................................416.3开发者中心...............................................................................................................................426.3.1控制台...............................................................................................................................426.3.2容器服务...........................................................................................................................436.3.3DevOps服务......................................................................................................................436.3.4微服务...............................................................................................................................456.3.5配置中心...........................................................................................................................51用友网络科技股份有限公司66.3.6链路追踪...........................................................................................................................516.3.7监控管理...........................................................................................................................516.3.8系统管理...........................................................................................................................526.3.9数据同步...........................................................................................................................536.3.10应用配置...........................................................................................................................546.4OpenAPI.....................................................................................................................................57用友网络科技股份有限公司7第一章云原生1.1云原生和云原生应用云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生既包含技术(微服务,容器,敏捷基础设施),也包含管理(DevOps,持续交付等),是一系列Cloud技术、企业管理方法的集合。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中,而不是传统的数据中心;Native表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。以下是CNCF对云原生的重新定义:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API。如下图所示:图:云原生定义这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。这是新定义中描述的代表技术,其中容器和微服务两项在不同时期的不同定义中都有出现,而服务网格这个在2017年才开始被社区接纳的新热点技术被非常醒目的列出来,和微服务并列,而不是我们通常认为的服务网格只是微服务在实施时的一种新的方式。以云原生技术构建和运行的应用程序叫云原生应用,云原生应用架构包含三个特征:容器化、微服务和DevOps。NCCloud2021.05版本构建于技术中台iuapgPaaS5.0之上,完全基于新一代技术栈--云原生技术构建用友网络科技股份有限公司8并运行,进行了大型企业级应用的微服务拆分,具备容器化、DevOps、灰度发布、持续交付、以及微服务治理等先进特征。1.2DevOpsNCCloudDevOps提供了针对各种类型的项目应用进行快速迭代开发的持续集成功能,以可视化的方式实现应用的集成、测试、发布自动化,并提供在线控制台及日志,进行故障分析与排查,以Docker镜像为应用交付载体,一次构建,到处运行,平台自动生成子域名,让应用自由接入。基于持续集成、流水线、持续部署、配置中心、多套环境等基础服务,建立了日志管理、应用版本升级管理、应用性能监控、用户行为监控等应用服务,实现DevOps理念在企业IT生产中的应用,降低产品研发迭代生产中的成本,提高研发效率。NCCloud开发人员按照经典模式进行代码开发,提交代码编译出盘后根据服务配置信息进行服务的拆分,可以根据客户不同的需要拆分出不同的服务,然后将服务生成镜像推送到镜像仓库,如下图所示:图:NCCloudDevOps微服务可分可合,按需部署产品优势如下:服务可分可合:NCCloud云原生微服务支持可分可合,按需部署。可维护性强:在新版本崩溃或有问题的情况下快速回滚。上线快:简化交付过程,大幅减少上线时间。产品质量高:由于开发、测试和运维团队紧密合作,产品问题尽早暴露,帮助开发团队提高产品开发用友网络科技股份有限公司9质量。开发风险低:在软件交付生命周期中包含了风险控制方面的内容,有助于降低项目研发风险。1.3容器化NCCloud容器服务提供基于容器的运行时服务,采用Kubernetes的容器调度方案,能够支撑企业级容器化应用的全生命周期的调度与管理,为其提供高性能,可自动扩缩的容器应用管理能力,同时与DevOps服务及微服务高度融合,为企业业务快速变化提供高效稳定的全方位服务;NCCloud应用服务以镜像的方式存在Docker镜像仓库里,通过NCCloud容器服务,当大量用户涌入时,可以快速扩容,这样即使部署更多的应用实例,非专业运维人员也能轻松搞定,NCCloud容器服务弹性伸缩流程如下图所示:图:NCCloud容器服务弹性伸缩产品优势如下:1.解决开发、测试、联调、预生产等多套环境统一;2.服务快速部署;3.运行时服务管理,具备灰度发布能力,新功能发布用户无感知;4.提供物理机、虚拟机、私有云、公有云统一接入的能力,屏蔽基础设施层的复杂性;5.为应用提供扩容、缩容、升级、回滚等功能;6.支持服务发现、负载均衡;用友网络科技股份有限公司101.4微服务治理微服务治理平台微服务治理的各种基础组件,结合运维平台的基础设施,可以实现服务的自动发现、水平伸缩和服务降级等能力,图:微服务治理注册中心:提供微服务的自动发现、心跳检查和负载均衡能力(实际的负载均衡由RPC客户端实现,服务注册中心提供服务权重信息)配置中心:为微服务应用提供动态配置功能,支持包括spring初始化参数、数据库连接数,以及程序运行类变量等动态配置功能,让应用运行中可以动态变更各种参数,以及在不同环境(开发、测试、生产)中使用不同的配置,降低开发难度,提高自动化服务授权:在RPC接口和方法级别提供基于微服务应用标识的访问控制,可以控制某一个或者一组微服务应用对某一个接口和方法的访问权限,对高敏感度的信息接口进行保护服务服务鉴权:提供基于token的服务鉴权服务降级:当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作。服务降级主要用于当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,我们可以将一些不重要或不紧急的服务或任务进行服务的延迟使用或暂停使用。NCCloud的通过熔断和限流实现服务降级。用友网络科技股份有限公司11一致性框架:自研分布式事务处理框架:在NCCloud在微服务拆分实践中使用Saga框架决微服务架构中的分布式事务问题。1.4.1微服务框架微服务架构是云原生的重要组成部分,微服务框架是支撑NCCloud微服务架构应用全生命周期管理的平台,为开发者提供从开发到运维、运行的一系列开发套件和服务,包含RPC框架、配置中心、注册中心、服务链路追踪、服务限流、服务熔断、服务统计、服务评价等组件和服务。全面支持微服务架构,结合服务发现、配置管理支撑大规模微服务的运行。包括微服务注册,心跳检查,服务发现和服务容灾,并提供了服务依赖关系图,链路追踪,服务权限控制,服务调用统计等。在微服务架构中,每个服务独立开发,完成一个特定的业务功能,并且每个服务运行在自己的进程中,相互之间通过轻量级进程间通信机制,比如RESTfulAPI或RPC的方式实现服务之间的调用。在方便了业务功能开发的同时,也引入了一些运维要求高、分布式本身的复杂性等问题。1.4.2Saga框架在微服务架构中,微服务应用是由一系列松耦合、独立的服务实例组成,没有一个中心的服务或应用存储状态,传统的数据库事务,就不能满足这个架构下的分布式事务需求。为此,在NCCloud中,为了解决微服务架构中的分布式事务问题,针对NCCloud中的ERP系统的长链路调用,保障各个微服务之间的数据一致性,自研实现Saga模式的分布式事务框架,通过Redis+MQ实现的消息传递方式,支持事务加入、开启、提交、重试、补偿等事务管理机制。该框架与NCCloud的多模块机制、持久化机制、事务提交机制等融合,并能适配Oracle、SQLServer等大型数据库,适合不同的部署实施应用场景。同时,NCCloud提供的错误中心,可以监控和查看未及时完成的长事务,结合NCCloud提供的微服务处理中心,监控和管理未正常处理的消息。1.4.3服务注册中心在微服务架构中,存在着大量的微服务实例,并且相互之间存在着复杂的调用关系,为了解耦微服务之间的调用关系,需要在整个微服务架构中引入服务注册中心,以帮助服务实例之间互相感知彼此的存在。用友网络科技股份有限公司12在NCCloud中,为了解决服务发现的问题,实现了一个功能完善的服务注册中心,提供服务地址列表的更新对比和本地容灾功能,其中的本地容灾功能,在服务注册中心失败的情况下,微服务实例依然可以根据本地的容灾信息,进行服务实例地址的获取。在业务应用使用过程中,微服务启动时,通过SDK+配置的方式,根据服务配置信息,将服务定义的元数据信息,以及服务实例信息(实例IP、应用)等上报到服务注册中心。如果注册失败,应用停止启动,以防业务功能出错。同时,服务调用方启动时,也需要将自己的服务信息上报到注册中心,并从注册中心获取需要调用的服务的实例地址信息。1.4.4配置中心在NCCloud开发中,每个微服务都包含代码和配置。其配置包含各类服务配置、各类开关和业务配置。在基于云原生部署后,NCCloud配置的管理变得更复杂和麻烦了。如果还是以常规开发形式管理配置,则要承担反复修改配置、重新打包、重新做镜像等风险,这基本上不可能,因此引入配置中心来管理配置,采用集中式管理每个微服务的配置信息,并实现版本化管理控制。1.4.5全链路监控随着微服务架构的流行,服务按照不同的维度进行拆分,一次请求往往需要涉及到多个服务。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具,以便发生故障的时候,能够快速定位和解决问题。NCCloud全链路监控就是在这样的问题背景下开发的。想要在这个上下文中理解分布式系统的行为,就需要监控那些横跨了不同的应用、不同的服务器之间的关联动作。所以,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路。用友网络科技股份有限公司131.5中间件1.5.1调度任务中心调度任务中间件是指基于给定时间点,给定时间间隔或者给定执行次数自动执行任务。NCCloud调度任务中间件主要包括Trigger(触发器)、Scheduler(任务调度器)和Job(任务),其中Trigger,Job是元数据,Scheduler才是任务调度的控制器。1.5.2分布式缓存(redis)在高并发的分布式的系统中,缓存是必不可少的一部分。没有缓存对系统的加速和阻挡大量的请求直接落到系统的底层,系统是很难撑住高并发的冲击,所以分布式系统中缓存的设计是很重要的一环。在NCCloud2021.05版本中,选择的分布式缓存中间件是redis,redis是一个key-value存储系统。Redis是一个开源的、基于内存的数据结构存储器。分布式缓存会带来好处,相应的,也会带来问题。使用分布式缓存的好处有:1、加速读写。因为缓存通常是全内存的。对内存的直接读写会比传统的存储层性能好很多。举个例子:同等配置单机RedisQPS可轻松上万,MySQL则只有几千。加速读写之后,响应时间加快,相比之下系统的用户体验能得到更好的提升。2、降低后端的负载。缓存一些复杂计算或者耗时得出的结果可以降低后端系统对CPU、IO、线程这些资源的需求,让系统运行在一个相对资源健康的环境。但随之以来也带来一些问题:1、数据不一致性:缓存层与存储层的数据存在着一定时间窗口一致,时间窗口与缓存的过期时间更新策略有关。2、代码维护成本:加入缓存后,需要同时处理缓存层和存储层的逻辑,增加了开发者维护代码的成本。用友网络科技股份有限公司143、运维成本:引入缓存层,比如Redis。为保证高可用,需要做主从,高并发需要做集群。1.5.3分布式消息服务器(MQ)分布式消息中间件负责接收,保存和分发消息,在分布式场景下可扩展进程之间的通信,同时降低多个系统之间的耦合程度。分布式消息中间件用于保证异构应用之间的消息传递。应用程序通过MQ接口进行互连通信,可以不必关心网络上的通信细节,从而将更多的注意力集中于应用本身。分布式消息中间件作为实现分布式系统可扩展、可伸缩性的关键组件,具有高吞吐量、高可用等特点。在NCCloud2021.05版本中,选择的分布式缓存中间件是RabbitMQ或者Kafka。它们实现了高级消息队列协议(AMQP)的面向消息的中间件,具有可伸缩性和消息持久化特性。消息中间件具有解耦、异步、削峰等作用。1.6OpenAPIOpenAPI即开放API,也称开放平台。即把NCCloud应用服务封装成一系列API(ApplicationProgrammingInterface,应用编程接口)开放出去,供第三方开发者使用,这种开放NCCloud应用服务的API,就被称作NCCloudOpenAPI(开放API)。用友网络科技股份有限公司15第二章云原生整体架构NCCloud2021.05完全基于最新的云原生技术进行构建并运行,对NCCloud进行技术上的升级以及相关配套服务的实现,采用分阶段实施、以及重点产品优先实施的策略,主要包括如下内容:一、技术上的亮点:1、前后端分离,web前端通过Http/Https协议调用后端微服务的接口;2、分布式开发架构突破,基于微服务架构进行高内聚、松耦合的微服务构建,微服务架构降低系统复杂度、可独立发布部署、可独立扩展,不同微服务之间通过RPC/Rest等方式互相调用;3、自研分布式事务处理框架sagas,很好的解决了复杂企业级应用的长事务问题,微服务之间通过可靠消息实现异步交互,提升了性能,解决了分布式环境下的业务数据一致性问题。4、容器化部署、编排和管理,通过容器部署,解决了NCCloud微服务应用部署时的环境一致性问题,通过K8S对容器进行编排和管理解决大规模集群中任务之间的关系处理,如进程间的依赖、交互与访问等。二、配套服务与功能实现:1、提供基于Eureka的服务注册发现,以解耦微服务之间的调用关系;2、提供相应的自动化服务实现,包括自动化构建、自动化安装部署、自动化测试、自动化平台发布(滚动升级/灰度发布);3、管理服务,对于微服务架构,提供相应的监控与管理服务、日志管理服务等;4、协作服务,运用DevOps思想提升开发、测试、运维的高效沟通与协作,实现开发与运维的一体化;5、引入和自研分布式中间价,如自研调度任务,引入分布式锁、分布式缓存redis,消息中间件MQ等;NCCloud2021.05完全基于最新的云原生技术进行构建并运行,支持公有云、私有云、混合云等资源管理,支持容器调度和编排,提供容器服务、持续集成、持续交付、镜像仓库等应用基础服务,为应用提供扩容、缩容、升级、回滚等功能,同时为NCCloud应用的微服务架构落地提供全面支持,即支持NCCloud微服务开发、构建、注册、发现、使用和运维,支撑大规模微服务的运行和负载均衡;并结合DevOps的理念,通过提供自动化运维、日志管理、运营分析、中间件服务等功能,帮助NCCloud应用的开发及运维人员降低产品研发迭代过程中的负担。NCCloud2021.05云原生架构如下图所示:用友网络科技股份有限公司16图:NCCloud2021.05云原生架构NCCloud云原生架构介绍如下:1、DevOps:简化交付过程,加快软件产品和服务交付,大幅减少上线时间,为企业级应用开发、运维、运营提供一站式支撑服务。2、微服务拆分:我们把NCCloud整个大单体系统根据业务拆分成若干个微服务,根据NCCloud的业务和领域设计,以及各相关干系人沟通,把NCCloud大单体应用拆成若干个业务服务以及若干公共服务,还有一些其他的辅助服务。NCCloud云原生微服务支持可分可合,按需部署。3、微服务治理:提供服务注册中心Eureka,所有的服务都在注册中心注册,负载均衡也是通过在注册中心注册的服务来使用一定策略来实现。使用配置中心进行统一的配置管理。5、提供监控功能,监控每个服务调用花费的时间等,提供监控面板,可以监控各个服务上的服务调用所消耗的时间等。6、使用分布式中间件技术,如调度任务,redis,MQ。7、自研分布式事务处理框架:在NCCloud在微服务拆分实践中使用Saga框架决微服务架构中的分布式事务问题。8、容器化:NCCloud云原生底层基于容器技术,容器服务提供基于容器的运行时服务,采用Kubernetes的容器调度方案;全新的技术模式正在快速改变着创建、发布和运行分布式应用的方式。用友网络科技股份有限公司17第三章产品新增特性模块功能配置中心公共配置文件查询配置批量操作与权限设置下载器权限公共配置文件路径自定义配置文件分组支持多人多环境的批量授权配置文件分组批量删除,级联删除文件配置中心的逻辑应用,支持批量授权分批查看有权限的下拉应用,后端模糊查询,优化查询性能批量导入、升级等界面,跳转时携带选中的应用的信息下载器修改逻辑,暂不受文件级别的公共权限控制公共配置文件的管理改为新接口,能够查询除权限外的全局公共应用配置中心能按照自定义的应用组合设置数据源配置文件配置中心的下载器,支持按照流水线环境的文件级别自定义路径,下载公共配置安装器mariadb支持主从集群支持不使用vip部署控制台地址转换Harbor升级基础镜像升级redis6(单机、sentinel、cluster模式)安装、卸载、重启、健康检查支持非22端口安装产品redis支持多线程安装器安装时,做UOS适配,包括jre、redis安装器内嵌数据库改为mariadb中间件安装后,详情页面增加安装时间,用途描述信息等信息,用于追踪中间件的使用支持对在安装器里加入资源规划里的主机进行节点监控对于既非业务类应用,又非技术中台应用的这类通用性应用,如数据工场应用,通过安装器进行部署时,支持选择“系统环境”进行发布,在流水线管理,应用管理里与业务应用区分开开放mysql主从安装配置容器云运维监控支持监控Mysql数据库运维监控支持监控PG数据库运维监控支持监控达梦数据库支持redis的cluster模式监控用友网络科技股份有限公司18支持监控多套环境监控增加移动通知方式,如短信,友空间通知方式增加对业务Nginx的监控与管理报警中心增加过滤功能,如按照时间,应用过滤等为追踪各个微服务的负载情况,提供根据服务、服务接口、restAPI...