2019独角兽企业重金招聘Python工程师标准>>>


转载本文需注明出处:EAWorld,违者必究。

引言:

根据保险行业发展趋势,目前保险交易已经呈现高频化、碎片化、场景化等特点,对系统的处理能力、容量、业务连续性、需求相应速度、运维响应速度提出了更高的要求。业务模式创新重塑导致系统更新频繁、应用复杂度急剧升高,传统架构不堪重负,敏捷开发和快速交付无从谈起。

本次实施目标为建设满足XXX保险公司业务需求的微服务管理平台和配套工具规范,包括:微服务开发框架,微服务登记平台,微服务管理平台等,能够支撑微服务的开发、运行生命周期管理,进而更好的支持业务与技术的发展与创新。

目录:

一、项目背景与目标
二、微服务平台架构设计
三、微服务调用关系
四、微服务访问鉴权设计

一、项目背景与目标

根据保险行业发展趋势,目前保险交易已经呈现高频化、碎片化、场景化等特点,对系统的处理能力、容量、业务连续性、需求相应速度、运维响应速度提出了更高的要求。业务模式创新重塑导致系统更新频繁、应用复杂度急剧升高,传统架构不堪重负,敏捷开发和快速交付无从谈起。

客户面临的问题主要是:

  • 基于单体架构或SOA架构的应用无法适应业务模式创新的需要
  • 缺乏微服务应用的统一技术标准与体系架构
  • 微服务架构试点项目反应出对于服务的管控、治理亟待提升

客户微服务平台定制的目标,是建设满足新形势下保险业务需求的微服务管理平台和配套工具规范,能够支撑微服务的开发、运行生命周期管理,这主要包括:

  1. 微服务开发框架:一个供开发微服务的服务框架基座;
  2. 微服务登记平台:进行微服务设计、开发、变更、版本、订阅、下架等全生命周期管理;
  3. 微服务管理平台:进行微服务运行时管理,包括服务注册、服务发现、配置中心、网关、负载均衡、认证鉴权、熔断降级、监控等功能。

二、微服务平台架构设计

基于微服务架构的企业分布式应用平台,从集成开发工具、服务运行环境、应用管理监控、外部渠道接入等维度来划分,其功能架构如图所示,包括SDK&规范、注册中心、配置中心、监控中心、认证中心、API网关、服务运行环境、管理平台、登记平台等部分。

微服务平台逻辑架构

微服务平台概念模型

结合客户的实际情况,微服务平台的概念模型定义如下:

  • 注册中心:支持一个环境内所有域下所有微服务的注册
  • 配置中心:支持支持一个环境内所有域下所有微服务的配置
  • APM:支持一个环境内所有域下所有微服务的APM监控
  • 断路器监控中心:支持一个环境内所有域下所有微服务的断路器监控,支持按每个版本查看
  • 日志中心:支持一个环境内所有域下所有微服务的日志收集、查看
  • :对应完整的业务域,比如车险域
  • 网关:网关分为外部网关和内部网关。外部网关部署在DMZ区,用于把API对外网暴露;内部网关用于跨系统间的API调用
  • 系统:对应实际的业务系统,每个域有多个业务系统
  • 应用:对应业务系统中的业务模块,每个业务系统有多个应用
  • 微服务:每个应用有多个微服务
  • 微服务版本:每个微服务可以有多个版本,其中可以有多个上线运行版本
  • API:每个微服务版本提供的API
  • 实例:每个微服务版本的运行进程

三、微服务调用关系

微服务之间的调用关系分为系统内部和跨系统两种场景:

1、系统内部的微服务之间调用

采用直连方式,微服务多实例部署时,调用者采用客户端负载均衡器(如Netflix Ribbion)。

2、跨系统的微服务之间调用

跨系统的微服务调用通过API网关进行中转,服务提供者需要在API网关上配置路由,然后在API Store中发布API;

服务消费者通过API Store订阅需要的API并获得订阅码,然后携带订阅码调用所订阅的API;

API Store支持订阅审核流程,服务提供者可以对消费者的订阅请求进行审核。

注:API Store是为客户定制的管理服务发布与订阅的模块,这里不做展开描述。

在实际业务场景中,微服务提供者运行期存在多版本共存的情况,所以API网关和微服务SDK支持微服务多版本路由策略:

  1. 客户端请求头指定调用目标服务版本
  2. 支持灰度版本策略:可以设置针对特定的一组调用者允许或不允许访问灰度版本(即黑白名单),即灰度版本导入部分客户端流量
  3. 支持灰度版本在线热切换成正式版本

四、微服务访问鉴权设计

服务的调用过程包括服务发布与服务消费的过程。

在不同的服务调用场景中,API网关和服务提供者需要对消费者的身份进行认证、对服务调用进行鉴权。

API网关负责校验客户端订阅码的合法性(调用API鉴权服务进行鉴权),支持黑白名单配置;微服务提供者(SDK)负责校验客户端(系统内部服务或者API网关)身份的合法性。

微服务访问鉴权设计

1)服务消费者通过API网关调用服务提供者的API时,需要在请求头中携带订阅码

2)API网关根据请求头中的订阅码,调用鉴权服务校验请求的合法性,鉴权失败则拒绝非法请求

3)API网关鉴权成功后,删除请求头中的订阅码,避免泄露服务消费者的安全信息给服务提供者,并在请求头中添加API网关标识,然后根据当前路由规则转发到后端某个API服务提供者实例上

4)服务提供者接收到来自API网关或者系统内部其他微服务的调用请求,获取请求头中的客户端标识,根据这个标识从服务注册中心获取客户端实例列表,比较此次请求的来源是否在实例列表中,验证此次请求是否来自合法的消费者。

下面是Java客户端调用示例,订阅码等调用所需的参数可以在application.yml (application.properties)或配置中心上配置,微服务SDK开发工具包中已经封装了请求头关于鉴权的处理。

Java客户端调用示例

以上便是通过某保险公司微服务平台实施案例,分享了微服务架构下的服务调用与鉴权的全部内容。

关于作者:李忠文,普元开发工程师,普元DevOps核心成员之一。曾参与兴业银行、上海大众、北京海关、交行卡中心、中国银联等项目。

关于EAWorld:微服务,DevOps,数据治理,移动架构原创技术分享。长按二维码关注!

转载于:https://my.oschina.net/u/3920392/blog/2987418

微服务架构下的服务调用与鉴权——某保险公司微服务平台实施案例分享相关推荐

  1. 微服务架构下的安全认证与鉴权

    微服务架构下的安全认证与鉴权 转载自:https://mp.weixin.qq.com/s/qBJ_257IWn3cctqmKfJ7FQ 作者:王海龙,来自:EAWorld 现任普元云计算架构师,毕业 ...

  2. 微服务架构下的身份认证

    从单体应用架构到分布式应用架构再到微服务架构,应用的安全访问在不断的经受考验.为了适应架构的变化.需求的变化,身份认证与鉴权方案也在不断的变革.面对数十个甚至上百个微服务之间的调用,如何保证高效安全的 ...

  3. 如何在微服务架构下进行数据设计?

    作者:唐建法 && Mongoing中文社区 来自:http://www.mongoing.com/ 微服务是一个软件架构模式,对微服务的讨论大多集中在容器或其他技术是否能很好的实施微 ...

  4. 微服务架构下静态数据通用缓存机制

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源 |  my.oschina.net/u/3971241/bl ...

  5. 微服务架构下,静态数据通用缓存机制!

    本文转自:波斯码 链接:https://blog.bossma.cn/architecture/microservice-business-static-data-universal-cache-me ...

  6. 阿里微服务架构下分布式事务Seata

    转载自  阿里微服务架构下分布式事务Seata Seata 是什么? Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务.在 Seata 开源之前,S ...

  7. 这个清明节我要学习微服务架构下分布式事务Seata

    Seata 是什么? Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务.在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演 ...

  8. 设置失败重新发起_微服务架构下请求调用失败了怎么办!

    微服务架构相比单体架构,服务的调用从同一台机器内部的本地调用变成了不同机器之间的远程方法调用,但是这个过程也引入了两个不确定的因素: - 调用的执行是在服务提供者一端,即使服务消费者本身是正常的,服务 ...

  9. 微服务架构下的测试之道

    作者:袁慎建,崇尚简约,热爱编程 && 运动健身 && 知识分享,擅长敏捷开发实践,持续集成 && 持续交付,关注代码整洁 && TDD ...

最新文章

  1. 【直播预告】计算机视觉中数据增强原理和实践
  2. Ubuntu下安装arm-linux-gcc-4.4.3.tar.gz (交叉编译环境)
  3. iOS开发之邮件发送代码
  4. 计算机常用英语(2)
  5. uva 10570—— Meeting with Aliens
  6. 【Leetcode】113. 路径总和 II
  7. C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...
  8. 支付宝开放平台开发助手_支付宝:如何创建和接入支付宝电脑网站支付-新手必备...
  9. 【栈】实现逆波兰计算器
  10. 图书销售系统需求分析获取
  11. 变上限积分求导公式(通用公式)
  12. 制作一份高质量的APP运营推广方案
  13. CodeForces - 1144C Two Shuffled Sequences【优先队列】
  14. Linux文件名包含小括号处理
  15. Windows 7 C 盘隐藏文件分析 删除
  16. 如何通过文档管理控制合同管理
  17. 操作系统学习(第一章————第二章)
  18. iOS----支付/银联/微信
  19. 分享pdf转换成word格式的最新方法
  20. 阿里云大学考试python初级-python初级

热门文章

  1. css首字下沉_一个简单CSS首字下沉
  2. RTKLIB相对定位部分算法梳理
  3. 加载主类 Hello 时出现 LinkageError java.lang.UnsupportedClassVersionError
  4. 干货(附源代码) | 爬取一万条b站评论,分析9.7分的新番凭啥这么火?
  5. 3DMARK 06超频后成绩上万
  6. 14、W601之AHT10温湿度传感器
  7. 甘肃省甘南藏族自治州谷歌卫星地图下载
  8. 光学识别OCR软件Readiris Pro 17 for Mac
  9. SAP自动检验批应用中检验开始日期和检验结束日期的产生逻辑
  10. 远程搜索多选组件实现