企业管理应用开发平台之微服务

发布时间:2022-10-02 01:19:07   来源:下载爱游戏棋牌推荐 作者:下载爱游戏注册  

  随着新一代信息技术的发展,企业面临转型升级、服务质量提高以及工作效率加快等需求,信息化资源日益成为企业重要的核心竞争力基础。

  企业管理应用开发平台可以作为各(成员)单位信息化建设的主要载体,覆盖管理信息化和工程信息化两条主线,承担着对产品全生命周期过程的管理,包括管理、论证、设计、工艺、制造、试验、维修服务等;涉及到多个不同类型的管理系统,例如综合管控、知识应用、数字化研发、图样资料数字化管理等。构建企业管理应用开发平台,落实平台中的关键共性技术,保证“数据编码统一、分类统一、属性统一、数据组织模式统一、公共资源管理统一”,满足企业发展战略与财务管控,为公司智能制造的发展提供支撑。

  其中微服务平台是企业管理应用开发平台的主要组成部分,能够提供服务注册发现、动态配置、限流、熔断、监控、编排等服务和治理能力。

  微服务应用云上托管,提供云上自动部署和运维能力,解决手工部署效率低、错误率高、升级困难、业务中断、监控定位难等应用运维问题,适用于政企IT系统、物联网及互联网类应用。应用微服务化,提供基于微服务架构的应用全生命周期管理,解决传统架构下的应用耦合度高难以扩展,开发、部署及运维效率低业务创新慢的问题,适用于电商、游戏类应用。提供应用多租及自动化部署解决方案,帮助企业实现从卖软件License到卖服务的商业模式转变,适用于政企、能源、教育、地产等行业SaaS应用。

  微服务适用的场景可以简化为:项目需要高频次或长时间迭代维护;项目复杂度高或逐渐变高、应用多、模块多;团队人数多或团队人数逐渐增加,具备充足(可组建成完整开发运维小组)的开发人员、测试人员、运维人员、经营人员;各个组件和服务之间不要求紧密集成,比如那些需要快速处理实时数据的应用程序,延迟可能是灾难性的,不适与采用微服务架构。

  杰瑞企业管理应用开发平台基于PaaS层软件服务云基础设施,能够在技术、业务和数据层面上为集团公司、多租户提供支撑和接入能力,提供身份鉴别、访问控制、安全审计等功能。平台底层采用微服务技术架构,提供推送服务、鉴权服务、附件服务,报表服务等核心业务。

  Spring Cloud是一系列框架的有序集合,其通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包。企业管理应用开发平台基于spring cloud框架进行微服务构建,Spring Cloud提供了标准化的、全站式的技术方案,意义可能会堪比Servlet规范的诞生,有效推进服务端软件系统技术水平的进步。

  1)Nacos融合了服务注册发现中心、配置中心、服务管理等功能。eureka是注册中心,负责微服务的注册与发现,起到承上启下的作用。

  2)Nacos具备服务优雅上下线和流量管理(API+后台管理页面),而Eureka的后台页面仅供展示,需要使用api操作上下线且不具备流量管理功能

  3)从部署来看,Nacos整合了注册中心、配置中心功能,把原来两套集群整合成一套,简化了部署维护

  4)从长远来看,Eureka开源工作已停止,后续不再有更新和维护,而Nacos在以后的版本会支持SpringCLoud+Kubernetes的组合,填补 2 者的鸿沟,在两套体系下可以采用同一套服务发现和配置管理的解决方案,这将大大的简化使用和维护的成本。同时来说,Nacos 计划实现 Service Mesh,是未来微服务的趋势

  5)从伸缩性和扩展性来看Nacos支持跨注册中心同步,而Eureka不支持,且在伸缩扩容方面,Nacos比Eureka更优(nacos支持大数量级的集群)。

  6)Nacos具有分组隔离功能,一套Nacos集群可以支撑多项目、多环境。①

  Feign是一种声明式、模板化的HTTP客户端。使用Feign,我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。通过Feign,我们能把HTTP远程调用对开发者完全透明,得到与调用本地方法一致的编码体验。这一点与阿里Dubbo中暴露远程服务的方式类似,区别在于Dubbo是基于私有二进制协议,而Feign本质上还是个HTTP客户端。②

  缓存可以提高性能,减少后端负载,或者减少down机时间。但是多模块服务协作开发背景下,随着缓存越来越多,缓存的一致性维护难度随之提升。使用Redis作为共享缓存 ,解决缓存不同步问题,Redis是独立的服务,缓存不用占用应用本身的内存空间。

  主流的MQ有很多,比如ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。RocketMQ是以kafka为参照,对其进行了优化让其更满足互联网公司的特点,它是纯Java开发,我们可以自己阅读源码,定制自己公司的MQ。具备单机十万级吞吐量、可用性非常高、消息可靠性(经过参数优化配置,消息可以做到0丢失)、支持10亿级别的消息堆积等性能。

  杰瑞企业管理应用开发平台所有服务端组件和应用服务都以Docker容器形态运行在云端虚拟服务器和网络组成的虚拟计算集群上,也可以直接运行在物理层的服务器和网络上,对性能和服务响应时间要求较高的应用,应该直接在物理服务器上部署。不同租户通常部署在不同服务器集群上。服务器集群上部署Docker和K8s容器引擎,提供容器集群的运行环境,运行平台的各个关键组件。

  杰瑞企业管理应用开发平台基于K8s容器引擎管理多个主机上的容器化的应用,让部署容器化的应用简单并且高效,提供了应用部署,规划,更新,维护的一种机制,保证平台中的容器按照用户的期望状态运行着(比如用户想让Nacos一直运行,用户不需要关心怎么去做,K8s会自动去监控,然后去重启,新建,总之,让Nacos一直提供服务),管理员可以加载一个微型服务,让规划器来找到合适的位置,同时Kubernetes通过系统提升工具以及人性化方面,让用户能够方便的部署自己的应用。

  Sentinel 是阿里中间件团队研发的面向分布式服务架构的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户提升服务的稳定性。Hystrix 的关注点在于以隔离和熔断为主的容错机制,超时或被熔断的调用将会快速失败,并可以提供 fallback 机制。Sentinel 的侧重点在于多样化的流量控制、熔断降级、系统负载保护、实时监控和控制台。此外Sentinel更具轻量级、高性能,支持多样化的流量整形策略。

  云计算环境下,应用系统面临多重身份认证问题,传统的基于单一凭证的身份鉴别方式,已不足以胜任对这些用户进行有效身份鉴别。为解决该问题,平台基于JWT支持多因子身份鉴别技术或基于单点登录的联合身份鉴别技术实施应用系统身份鉴别。

  JWT,全称是 Json Web Token,是 JSON 风格轻量级的授权和身份认证规范,可实现无状态、分布式的 Web 应用授权。

  杰瑞企业管理应用开发平台前端分为UI层和BFF层,UI层采用MVVM设计模式,可以根据应用和终端的需求选择合适的UI技术框架,例如PC端的企业应用可以使用Ext Js,UI逻辑应用或移动端可以选择Vue.js。BFF层是为了解决应对多终端服务适配的需求,介于UI与后端服务之间,为不同的终端UI提供view model数据。BFF层采用NodeJs实现,便于掌握javascript的前端开发人员根据界面需求开发,同时提供更灵活的数据聚合、裁剪能力。

  Spring Security是一个功能强大且高度可定制的身份验证和访问控制框架,为应用程序添加安全控制,核心功能主要包括认证、授权、攻击防护等。

  Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。在配置文件中列出Load Balancer后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随机连接等)去连接这些机器。

  如果要通过provider/service的方式去调用微服务,还需要构造http请求,请求回来的结果还要做json解析等等一系列繁杂的工作。而Ribbon就用来解决这个问题的。在springcloud.alibaba的nacos发现服务的Maven包中,已经包含了ribbon.我们通过简单的几行代码,就可以完成微服务的调用。③

  企业管理应用开发平台所有服务端组件和应用服务都以Docker容器形态运行在云端虚拟服务器和网络组成的虚拟计算集群上,也可以直接运行在物理层的服务器和网络上,对性能和服务响应时间要求较高的应用,直接在物理服务器上部署。不同租户通常部署在不同服务器集群上。服务器集群上部署Docker和K8s容器引擎,提供容器集群的运行环境,运行平台的各个关键组件。

  基Spring Cloud以及Spring Cloud Alibaba组件,搭建微服务框架,提供微服务发现、配置和管理功能。通过提供一组简单易用的特性集,可以快速实现动态服务发现、服务配置、服务元数据及流量管理,可以更敏捷和容易地构建、交付和管理各模块。以应用生命周期内的全面开发管控能力解决微服务应用建设的各阶段问题,帮助用户加速云端数字化转型。

  注:①引自简书作者「一个没有感情的程序员」的关于“nacos简介以及作为注册/配置中心与Eureka、apollo的选型比较”。

  如果您有任何需求调研方面的问题,欢迎您联系我们的业务经理:侍先生( my451507106微信)