DevOps 驱动的人保微服务平台建设之路

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
注册配置 MSE Nacos/ZooKeeper,118元/月
云原生网关 MSE Higress,422元/月
简介:

一、项目建设背景

根据保险行业发展趋势,目前保险交易已经呈现高频化、碎片化、场景化等特点,对系统的处理能力、容量、业务连续性、需求相应速度、运维响应速度提出了更高的要求。为了提高项目建设的效率、质量、安全性、技术水平,缩短项目建设周期,降低项目建设成本,进而更好的支持业务与技术的发展与创新,人保寿险急需建设应用和服务的技术标准和分布式的应用平台。

db0cb47ee7603851e6ba7f10833ffaa62431ff7e

那么建设分布式的应用平台有什么好处呢?

1.分布式应用架构解决了服务器性能的问题。单台服务器的性能毕竟有限,综合利用多个节点的处理能力,才能提高整体的服务能力。

2.将不同的业务模块部署在不同的服务器上,或者同一个业务模块分拆多个子业务,再部署在不同的服务器上,以此来解决高并发的问题。这样一来,模块的内聚性更高,更多的关注自身业务,模块与模块间耦合度更低,减少了业务复杂度。

3.分布式应用平台对分布式应用有结构化的管理,相比传统的管理模式,大大减轻了运维人员的负担,应用配置的修改发布可以通过友好的可视化页面轻松完成。

4.分布式应用平台同时解决了分布式应用的监控告警问题,对每一个应用服务进行实时的监控,出现问题能够立刻进行告警通知、第一时间响应。

二、平台技术栈及架构解析

经过项目初期的调研与考察,在人保寿险确定的平台架构技术如下:

分布式平台主要以Spring Cloud组件为技术支撑,主要用到Eureka作为注册中心、Feign用来做服务调用客户端、Ribbon来进行客户端的负载均衡,Hystrix用来作熔断、限流和降级。搭配配置中心Apollo、断路器监控中心Hystrix-dashboard 和Turbine,形成一套完整的分布式微服务架构。

235057f2ed608504a9def6395f5285bb5bd2195f

(人保寿险DevOps项目平台技术栈)

在日志的采集和处理方面,我们采用了常见的ElasticSearch+Logstash+Kibana的架构,利用ELK一站式解决方案的便利性,为整个平台提供监控。至于开发测试阶段的持续集成、持续部署,我们通过DevOps+Maven+Git/SVN来完成。

093261fdadc9ab6dbc1e42d27b90fab797dc7608

(人保寿险DevOps项目分布式平台技术架构)

分布式应用逻辑架构总共由以下这几部分组成:

(1)服务网关API Gateway,在微服务架构中,所有的服务都变成了一个个细小的API,API Gateway作为整体架构的重要组件,它负责对应用的API进行统一的管理

(2)微服务平台,微服务平台负责应用服务的注册发现、负载均衡、应用配置的管理、服务调用链的监控和告警

(3)PaaS平台,PaaS作为业务基础平台,负责提供公共的各类中间件服务

(4)管理门户,提供友好的可视化界面对应用服务进行登记、配置管理、授权以及日志监控

(5)DevOps,高效自动化地完成微服务应用的持续构建和持续部署。

(6)SDK,为了在应用系统技术架构上形成统一的技术标准规范和统一的规划,弥补应用开发和运行缺乏的技术平台短板,我们向人保提供了SDK脚手架以及开发手册,降低了开发分布式应用的门槛,有效缩短了项目的进度

(7)流程和规范的制订,让项目的全生命周期得到管控,项目在持续构建的过程中不断精益提升,在持续发布的过程中始终可以提供可用的稳定的介质版本

f0e2122573714d6ee5e926b0e418bac94babd24e

(人保寿险微服务平台部署架构)

在人保寿险微服务平台中,我们明确了用域-系统-应用架构来进行微服务管理的部署模式。

针对人保寿险不同业务领域,例如寿险域、车险域分为不同域进行业务隔离;

每个域下根据公司的业务板块创建业务系统,业务系统这个定义在不同的客户处有不同的定义,有的叫项目、有的叫系统群,实质上都是由一组微服务应用构成的;

业务系统下部署微服务器应用,每个应用部署多个应用实例形成高可用,共同来支撑业务。

三、通过DevOps对微服务应用进行CI/CD

bc7a786856b87c258c091e2beddfaccc03d54e0e

(DevOps对微服务应用进行CI/CD)

通过DevOps进行分布式应用的构建,可以很方便地进行项目构建、发布流水线的编排,可以让开发人员将更多的工作重心放在代码业务逻辑上,大大提高了生产效率和质量,解放了开发运维人员的生产力,减少了手工的重复劳动,避免了因为操作不当带来的损失。

对于人保寿险微服务应用进行持续集成和发布,我们很好地利用了DevOps的特点,本期项目DevOps的目标是通过CICD,对微服务类应用进行自动构建、自动发布、自动部署,减轻开发人员运维人员的负担,提高项目的效率和质量。

持续集成

持续集成模块的功能主要有代码库管理、构建定义管理以及构建实例管理等。在构建定义管理模块中,DevOps平台将构建任务分成了四种类型:

编译类任务:Maven、Ant、Gradle、纯前端构建等

测试类任务:Sonarqube、Jmeter、Selenium等

打包类任务:Npm、Archive、Docker等

其他工具类任务:Copyfile、Shell、介质提交到Nexus仓库、介质上传二方库等。

在每个构建定义上可以选择若干个需要的构建任务,通过原子步骤编排,组装成一个完整构建流程。代码提交时触发构建(支持gitlab、github、svn等常用代码库版本管理工具)、日构建等不同的构建触发策略等,支撑了持续集成的完整链路打通。

自动化部署

针对人保寿险的微服务应用,DevOps定制化了一套持续集成的构建定义。

(1)首先从代码库拉取代码,支持从Git,SVN拉取

(2)接着是构建,可以使用maven、ant、gradle构建,前端支持npm构建

(3)然后通过SonarQube进行代码的质量检测,生成质量报告

(4)最后进行编译介质的发布,在部署机远程执行脚本进行介质的发布

四、总结

截止到现在,人保寿险的一体化项目、微信项目、大数据项目都已经使用DevOps进行项目的持续集成、持续部署了,每天进行近百次构建,大大提升了工作效率,得到了客户的一致好评。随着DevOps的推广,将来会有更多的项目对DevOps进行使用。 那么,怎么才能更好的编排构建流水线?怎么才能让DevOps更贴近我们的业务,更好地与分布式平台整合?自动化运维的路还很长,而做好DevOps,就是向自动化运维迈进的第一步。

精选提问:

问1:DevOps中进行构建时对于各个节点的监控告警是如何实现的,持续集成各节点耗时,超过阀值告警、包括单元测试、持续集成等,包括定时任务是否正常发起,发起是否执行成功,主机资源使用情况等?

答:DevOps暂时没有支持对jenkins构建节点的监控告警,本次微课堂介绍的是对应用微服务的监控告警,通过对应用日志的采集,根据应用日志对应用进行监控。

问2:jenkins和sonar是容器化部署的么?

答:jenkins和sonar就是正常主机安装,没有通过容器方式部署。

问3:想知道你们用的spring cloud 版本.还有断路器监控中心Hystrix以及Turbine用的spring-boot-admin的监控是吗?为啥没有用链路跟踪呢?

答:Spring Cloud,现在有2.0.1,人保的版本是1.4.3。断路器监控中心用的是turbine。人保有自己的apm,所有没有用链路跟踪。


原文发布时间为:2018-11-19

本文作者:李燕鹏

本文来自云栖社区合作伙伴“高效运维”,了解相关信息可以关注“高效运维”。

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2月前
|
Kubernetes 持续交付 Docker
探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
【10月更文挑战第18天】探索DevOps实践:利用Docker与Kubernetes实现微服务架构的自动化部署
88 2
|
2月前
|
消息中间件 缓存 Java
亿级流量电商平台微服务架构详解
【10月更文挑战第2天】构建一个能够处理亿级流量的电商平台微服务架构是一个庞大且复杂的任务,这通常涉及到多个微服务、数据库分库分表、缓存策略、消息队列、负载均衡、熔断降级、分布式事务等一系列高级技术和架构模式。
92 3
|
3月前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
211 3
|
4月前
|
前端开发 API 数据库
构建领域驱动的微服务
构建领域驱动的微服务
52 3
|
4月前
|
消息中间件 Java RocketMQ
微服务架构师的福音:深度解析Spring Cloud RocketMQ,打造高可靠消息驱动系统的不二之选!
【8月更文挑战第29天】Spring Cloud RocketMQ结合了Spring Cloud生态与RocketMQ消息中间件的优势,简化了RocketMQ在微服务中的集成,使开发者能更专注业务逻辑。通过配置依赖和连接信息,可轻松搭建消息生产和消费流程,支持消息过滤、转换及分布式事务等功能,确保微服务间解耦的同时,提升了系统的稳定性和效率。掌握其应用,有助于构建复杂分布式系统。
68 0
|
5月前
|
消息中间件 负载均衡 数据管理
微服务架构在电商平台中的应用与实践
在现代电商平台的开发和运维中,微服务架构成为了提升系统灵活性和可扩展性的关键技术。本篇文章从实践出发,深入探讨了微服务架构在电商平台中的具体应用,包括服务拆分策略、通信机制、数据管理、以及常见的挑战和解决方案。通过真实的案例分析和代码示例,帮助读者全面了解微服务架构的优势和实施方法,提供在实际项目中的实践指导。
|
5月前
|
缓存 Devops 微服务
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
微服务01好处,随着代码越多耦合度越多,升级维护困难,微服务技术栈,异步通信技术,缓存技术,DevOps技术,搜索技术,单体架构,分布式架构将业务功能进行拆分,部署时费劲,集连失败如何解决
|
7月前
|
监控 Devops API
构建高效微服务架构:API网关的作用与实践构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【5月更文挑战第28天】 在当今的软件开发领域,微服务架构因其灵活性、可扩展性和容错能力而备受推崇。本文将深入探讨API网关在构建微服务系统中的关键角色,包括它如何促进系统的高可用性、安全性和性能监控。我们将剖析API网关的核心组件,并借助具体实例展示如何实现一个高效的API网关来服务于复杂的微服务环境。 【5月更文挑战第28天】 随着企业数字化转型的深入,传统的IT运维模式已难以满足快速迭代和持续交付的需求。本文聚焦于如何通过融合DevOps理念与容器化技术来构建一个高效、稳定且可扩展的云基础设施。我们将探讨持续集成/持续部署(CI/CD)流程的优化、基于微服务架构的容器化部署以及自动化监
|
7月前
|
运维 监控 Devops
构建高效稳定的云基础设施:DevOps与自动化运维的融合构建高效微服务架构的最佳实践
【5月更文挑战第28天】 在数字化转型的浪潮中,企业对于云基础设施的依赖日益增加。为了应对不断变化的市场需求和提供不间断的服务,传统的IT运维模式已不再适应现代业务的发展。本文将探讨如何通过结合DevOps理念和自动化工具,实现云基础设施的高效稳定运营。我们将分析自动化运维在提升效率、降低成本以及增强系统稳定性方面的关键作用,并展示实践案例以验证其效果。
|
7月前
|
监控 负载均衡 Java
【阿里云云原生专栏】微服务架构在阿里云云原生平台上的应用实例与优化策略
【5月更文挑战第20天】本文介绍了在阿里云云原生平台实现微服务架构的步骤,包括基于Spring Cloud的Docker化部署、使用ACK部署微服务,以及优化策略:服务发现与负载均衡(借助Istio)和监控日志管理。通过这种方式,企业能提升应用的可扩展性、可维护性和敏捷性。
261 5