美文网首页
ApiGateway构建微服务

ApiGateway构建微服务

作者: 红瓦李 | 来源:发表于2017-11-22 14:40 被阅读0次

    目的

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

    思路

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

    参考链接

    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时序图

    相关文章

      网友评论

          本文标题:ApiGateway构建微服务

          本文链接:https://www.haomeiwen.com/subject/bwbopxtx.html