在证券容器云平台项目中,各模块如何进行设计?

1回答

Steven99Steven99  软件架构设计师 , steven
michael1983yinxin赞同了此回答
容器云平台模块可能比较多,建议采用松耦合的设计,各模块通过编排而成为一个平台,也可根据需要快速进行调整重编排,比如菜单模块设计,菜单可以是动态的,根据组件需要自动生成菜单项。其他比如说权限、认证、日志(可能包括采集、传输、整合、显示等)等也是一样,松耦合。可以参考以下...显示全部

容器云平台模块可能比较多,建议采用松耦合的设计,各模块通过编排而成为一个平台,也可根据需要快速进行调整重编排,比如菜单模块设计,菜单可以是动态的,根据组件需要自动生成菜单项。其他比如说权限、认证、日志(可能包括采集、传输、整合、显示等)等也是一样,松耦合。可以参考以下设计:
容器云平台各模块及组件功能定义
容器云平台是一个生态体系,包括容器云平台及支撑其上的业务应用和服务体系架构所需的各项组件,所有的组件可以定义为平台级和服务级,但也有些组件既服务于平台也服务于业务应用,比如日志中心组件。我们也曾和厂商深入讨论过相关组件建设,相互都有受益。
集中日志中心
集中日志中心是容器云平台日志的采集、存储、汇聚、分析、展示的组件,采用基于ELK + Graylog等工具来实现集中日志中心的能力。提供基于中性化集群的管理、查询功能。支持标准输出日志采集、文件日志采集、log4j日志文件采集,kafka数据采集等。
日志采集工具除了logstash,另外采用filebeat、metricbeat、packetbeat、winlogbeat、auditbeat、heartbeat等工具。
30sutjqwlev

30sutjqwlev

数据采集组件支持Fluentd、Logstash、filebeat等。
vm3sg3gpslc
vm3sg3gpslc

详细设计请参阅《集中日志中心方案设计》。
需要注意的是,平台日志和应用日志是两个层次,可以用集中日志中心来集中管理平台和应用的日志,因此,集中日志中心的权限体系需要支持租户权限体系,平台管理员就是一个特殊租户,需要实现和打通各组件之间的统一认证和权限能力。
监控告警中心
监控告警中心是容器云平台监控平台各组件运行状况、监控告警规则定义、收集并展示平台运行情况的组件。监控告警中心是运维的重要助手,没有它就如同两眼一抹黑,难以有效保障容器云平台的正常运行,无法预测系统运行资源使用,就无法保障其可用性。
监控告警中心采用Prometheus + AlterManager工具,使用Grafana实现监控面板,展示监控内容项,另外自定义实现一些监控面板,以更好的集成到平台不同的组件中展现相关监控内容。
9qj4zz1rqjv
9qj4zz1rqjv

API网关
API网关是实现业务应用安全和服务治理的重要组件。可独立于容器云平台,但由于其独立性,我们把它作为一个独立服务组件来建设。API网关也是实现OpenAPI管理和提供稳定的接口能力的组件,通常包括API网关、API 管理工具,API集市等组件。
dsgg7ovdxli
dsgg7ovdxli

服务注册中心
服务注册发现中心是提供服务注册和查阅的地方。一个服务要给其他客户使用,就需要根据注册机制注册到注册中心,提供一个公开的地址,方便客户查阅。客户如果想使用某些服务,通过注册中心进行查阅,找到合适的服务及其地址,就可以在自己的服务中调用。
服务注册发现中心和容器云平台自身的注册发现组件不是一个内容,通常作为容器云平台的外部组件来支撑整个服务或微服务体系。和API网关等组件紧密结合实现服务治理。

服务配置中心
服务配置中心是容器云平台支撑微服务必不可少的组件,也是为了更好的利用容器的特性,支持运行时服务配置更新,解耦合服务配置和服务实现框架。服务配置中心是独立的组件,也可应用于其他平台和系统。在容器云平台,可以扩展支持不同层级的配置,比如应用层、服务层、实例层,根据实际需要来定义和管理业务应用和服务的配置。Config Client 和Config Server之间采用JMS或Kafka等消息组件作为通信组件。
rkfi6zrgcr

rkfi6zrgcr

统一认证中心
认证中心首先支持容器云平台各生态组件之间的统一认证和授权,和权限中心组件集成实现各组件的访问控制。认证中心提供单点登录能力。
平台管理
平台管理是容器云平台管理员视角或平台管理员角色所能操纵的功能。重点是基础设施资源管理和租户账户管理。理论上这一块更象是IaaS层的能力,不过目前Kubernetes等实现有些不同,无法做资源虚拟化,不过可以利用IaaS层的虚拟化能力,但仍然需要做一些额外的工作,比如标签标记不同的资源类型。和IaaS层提供不同的虚拟机服务类似相同。
基础设施资源中心
基础设施资源包括计算资源、存储资源、网络资源以及操作系统资源等,为整个容器云平台提供资源服务。通过标签来标记不同的资源,以满足不同的服务对资源的个性需求。基础设施资源不拘泥于物理机或者虚拟机的选择,按需进行资源分配和管理。资源分配以节点为基本单元,分区为节点的集合。但对于每个节点可以设置资源限额,设置资源预留额等,以实现更细粒度的资源控制。
有个问题是资源分配面临着分配实际的资源还是理论上的资源的问题,可能需要基于基于基础设置资源层所能提供的能力来决定。目前Kubernetes可能还无法实现资源超分的能力。容器云平台在实现时需要考虑充分的利用和共享资源。但在容器云建设初期资源总量较小的情况下,可能实现资源超分也意义不大。
租户账户管理
租户账户统一由平台管理,每个租户申请或注册一个租户账户,由平台管理员检查评估并确认(开通或不开通),分配所需基础设施资源。同时维护租户账户的基本信息、登录密码、认证方式等。
平台权限中心
平台权限主要考虑多平台管理员的情况下,对不同平台管理员进行授权,权限中心模块可以和租户权限中心使用同一个组件,平台管理是一个特殊的租户(平台管理员看到的权限和租户看到的权限列表是不一样的)。
公共镜像仓库
平台管理还有一项重要的工作就是维护公共的中间件镜像,比如Kafka、Redis、JDK、Tomcat、MySQL等,这样所有租户都可以使用这些中间件镜像快速部署为自己的服务,用于快速的环境搭建、测试,甚至是生产部署。
企业级中间件的部署建议统一来考虑,容器云平台提供的中间件更多的适合敏捷的开发测试。
平台日志中心
平台日志集成到日志中心,只管理查看平台的日志。
监控告警中心
平台监控告警中心侧重于平台各组件的运行情况监控,不监控业务服务的运行情况,集成监控中心组件。
平台设置
容器云平台设置包括Docker、Docker deamon、Kubernetes等配置选项,以及平台集成LDAP、可选组件、界面logo、背景等设置和配置。
多租户管理
多租户机制和能力是容器云平台的核心,因为最终容器云平台是为了支撑业务应用的。平台管理为租户提供基础设施资源,租户利用云资源管理和运营自己的业务应用。租户通过CI持续集成流程构建业务服务镜像,上传到镜像仓库。镜像仓库中的镜像经过安全扫描安全的镜像可以部署到容器云平台,每个租户都有自己独立的私有镜像库,用于存储租户自己创建的镜像。服务可以部署为1到多个服务实例,服务部署后注册到注册中心,通过配置中心来实现服务配置更新,可以实现实例级配置更新。由服务网关层实现服务非业务逻辑功能,比如认证、路由、转换等。
应用管理
应用管理是租户的核心。能够提供便利、完善的应用和服务管理能力,是能否赢得租户的关键,我们要认识到容器云平台只是个工具,工具的好坏一定有评判标准。用起来顺手,是最基本的要求。
应用管理中镜像部署为“业务服务”,注册到服务注册中心;每个服务可以部署一到多个“服务实例”,或者根据业务需要实现自动弹性伸缩,一个或多个服务通过服务编排为“业务应用”。请求通过负载均衡器分发到不同的服务实例上,并行处理,每个服务一个注册地址,不论有部署有多少服务实例,都通过负载均衡器来实现负载均衡。基于弹性伸缩的需求,负载均衡需要支持多种策略,以支持不同场景下弹性伸缩要求。
服务注册发现中心
租户部署的服务都首先注册到容器云平台服务注册中心,租户内部的调用无需经过外部的注册中心。租户若需要调用其他租户的服务,则需要从服务注册发现中心查找合适的服务。
这里需要注意的是,为了充分利用容器的特性,我们把服务的注册机制分为两个层次,一个是容器层的服务注册发现机制,一个是容器云平台外的服务注册发现机制。需要明确认识到这两个服务注册发现层次的不同。
服务配置中心
镜像在部署过程中,转到服务配置页面进行参数配置,完成配置之后实现部署并启动。配置共分三层:应用层配置、服务层配置和实例层配置。通常情况下是服务层配置,不需要控制每一个服务实例。但某些情况下也可能需要对每一个服务实例进行配置,或者采用单实例服务部署方式。容器云平台需要和服务配置中心组件集成,实现服务在容器云平台的配置和更新。
服务网关
服务网关是服务实现服务治理的重要组件,所有租户间的服务通过API网关提供统一的API服务(租户内部服务成为私有服务,租户间服务成为公有服务,公有服务通过API 网关定义开放API,供其他租户使用),隔离服务实现和API接口定义,服务网关提供了稳定的API接口层,服务的更新和替换不会影响API提供的服务。非兼容性的更新部署为新的API服务。服务网关分离业务服务的所有非业务功能,业务开发人员专注于业务逻辑的设计研发,不再考虑认证授权、访问控制等安全机制以及限流、限额、熔断、优先级配置等能力。
权限中心
权限中心支撑租户组织架构、人员、角色、权限的设置需求,以满足不同租户的不同场景要求。权限来自于平台功能项的操作粒度(平台操作员和租户看到的功能项是不同的),不同的权限集合组成定义为一个角色。组织架构和人员可以被赋予某种角色。组织架构下的所有人员继承组织架构的角色权限,一个人员可以被赋予多种角色。租户可以定义基于角色的权限管理体系,支持不同的组织架构和层级。
权限中心可以集成LDAP,证书中心、认证中心等功能实现企业级各系统的统一认证、权限管理服务。
链路跟踪
以图形化展示服务之间的调用关系,更清晰的定位异常节点,跟踪信息。链路跟踪可以有效避免服务之间的循环调用,尽可能的减少调用链路长度。更短的调用链路也是性能、安全等方面的要求。
负载均衡
负载均衡分容器层负载均衡和网关层负载均衡。在我们的整个平台生态系统中不建议采用客户端负载均衡机制。服务实例之间采用容器层负载均衡,通常可以考虑容器平台的负载均衡机制,但需要考虑弹性伸缩时的伸缩策略,不能采用随机策略来收缩容器,必须确保容器已经完成的业务请求的处理才可以被回收。
基础设施资源中心
租户的基础设施资源是由平台来分配的。通常情况下租户不需要再对自己的资源进行分配,我们暂不考虑租户的资源管理或再分配需求,只考虑租户使用分配的资源需求。资源中心可以查看已分配资源及在使用资源,空闲资源等信息,也可以再申请资源。
镜像仓库
租户自己构建的镜像保存于租户自己的私有镜像仓库中,同时租户也可以使用公共镜像仓库中的镜像。两个镜像仓库是分开的。租户的私有镜像仓库可能有多个,租户可以通过镜像仓库配置连接到不同的镜像库。
租户日志中心
租户日志中心主要采集租户部署应用的日志信息。容器中应用服务日志输出到标准输出,通过Logstash的组件来从标准输出中采集日志,每个服务的每条日志有固定的格式和标签来区分。集成集中日志中心实现租户日志管理。
监控告警中心
监控告警中心和链路跟踪机制、日志中心等共同实现业务服务、实例运行情况的监控及异常告警,协助定位分析。集成监控告警中心组件。
任务调度中心
任务调度中心主要支持批量任务、定时任务的处理。
标准化交付和管理
标准化交付就是从源码到标准化镜像构建的流程,包括源码开发、单元测试、源码管理、源码检查、编译、构建、上传镜像仓库、镜像检查、测试环境部署测试、测试用例管理、缺陷管理、文档管理等。主要实行持续集成CI流程。标准化交付作为容器云平台的一个独立组件可独立部署,和容器云平台之间通过镜像仓库实现标准镜像传递。
持续集成工具及流程
持续集成起于源码研发,止于镜像仓库。持续集成涉及代码编辑工具、源码管理工具、源码检查、编译、打包、生成镜像,以及缺陷管理、文档管理、API接口管理等众多的工具。
镜像仓库
镜像仓库是容器云平台的关键组件之一,是持续集成和应用部署运营的媒介,包括Server端和Client端。目前有众多的开源实现。安全性有待加强。

收起
 2019-05-14
浏览216

问题状态

  • 发布时间:2019-05-14
  • 关注会员:2 人
  • 问题浏览:1129
  • 最近回答:2019-05-14
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30