ApiGateway构建微服务

目的

  • 避免让客户端感知微服务边界的存在
  • 不同的后端、前端团队需要统一的接口设计、接入规范

思路

  • API网关是请求进入系统的唯一节点
  • API网关负责服务请求路由及协议转换
  • 它可能还具有其它职责,如身份验证、权限控制、负载均衡、“请求整形”与管理

参考链接

https://www.nginx.com/blog/building-microservices-using-an-api-gateway/

功能

  1. 协议解析
    以透明的方式实现Http到Rpc调用的转换:
    http请求到rpc调用实例的映射;
    无类型的参数转换为带类型的参数;


    ApiGateway构建微服务_第1张图片
    api register
ApiGateway构建微服务_第2张图片
api request process
  1. 服务代理
  2. 组合调用
    dubbo attachement提供了一种从consumer到provider的隐式传参机制


    ApiGateway构建微服务_第3张图片
    attachement机制

dubbo notification机制

是扩展的从provider向consumer的旁路消息机制。
变更DubboCodec中encodeResponseData,增加notification写入;
变更DecodeableRpcResult中decode,增加notification解析;
不同于attachement的传递属性,默认notification只传递给服务consumer不再向上传递,对于特定的notification需要一直向上传递我们通过DubboFilter机制实现copy and write隐式的完成特定notfication的连续传播


ApiGateway构建微服务_第4张图片
notificaton机制
  1. 安全验证
    目的:api gateway作为外部访问api的唯一入口,需要尽可能的拦截掉非正常请求,解析出真实的设备/用户信息,再向微服务发起调用。
    主要手段:设备识别;数字签名;
  2. 集中式日志与监控
    ELK:Elasticsearch(日志检索引擎,OLAP),Logstash(日志采集) Kibana(数据可视化)
    Zabbix(系统监控和通知)
    使用es数据源,按照服务、错误码等维度聚合错误
  3. 敏捷开发工具
    灵感:SOAP使用WSDL进行stub生成
    实现:ApiParser解析得到了完备的接口信息,基于这个信息我们采用模板技术(xslt/velocity/handlerbars),生成出java/oc/js的客户端调用代码,以及在线文档;
  4. 热发布(scan变为离线操作,推送ApiMethodInfo+Interface至apigateway,并动态创建新的代理实例,进行热替换)

附图

在项目启动的时候,会连上zookeeper,进入docker,下载docker项目中的Jar包,并解析内容

ApiGateway构建微服务_第5张图片
apigw代码结构分析
ApiGateway构建微服务_第6张图片
apigw一次http请求调用多个api时序图

你可能感兴趣的:(ApiGateway构建微服务)