ApiGateway构建微服务

2017-11-22  本文已影响0人  红瓦李

目的

思路

参考链接

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

功能

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


    api register
api request process
  1. 服务代理
  2. 组合调用
    dubbo attachement提供了一种从consumer到provider的隐式传参机制


    attachement机制

dubbo notification机制

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


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包,并解析内容

apigw代码结构分析 apigw一次http请求调用多个api时序图
上一篇下一篇

猜你喜欢

热点阅读