• 宁陵县:法院家事的实践与创新 2019-03-24
  • 日照:前5个月日照税收比重居山东省第二位 2019-03-22
  • 武警部队“长城-2018”反恐国际论坛在京开幕 2019-03-22
  • 税费“红包”助推高质量发展 2019-03-21
  • 电影人共聚“微博电影之夜” 张艺谋:如果不当导演就当守门员 2019-03-21
  • 陕西拍摄到野化放归林麝活动影像 放归林麝已度过危险期 2019-03-15
  • 国宝级黄腹角雉住进三清山 2019-03-15
  • 王石田朴珺罕见亲密写真曝光 女方喂男方冰淇淋娇羞甜蜜 2018-11-22
  • 世界很多国家想拥有核弹,但迫于种种原因而没能实现。 2018-11-21
  • 人事 江西两设区市任免一批领导干部 2018-11-20
  • 自由的生活_软路由论坛

     找回密码
     注册

    QQ登录

    只需一步,快速开始

    搜索
    查看: 448|回复: 0
    打印 上一主题 下一主题

    广西11选5彩经网: 在Kubernetes下实现API网关-睿云智合技术漫谈

    [复制链接]
    跳转到指定楼层
    1#
    发表于 2018-11-14 18:20:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

    广西11选5历史 www.jqel.net 您需要 登录 才可以下载或查看,没有帐号?注册

    x
    一、两种服务发现模式
    客户端服务发现
    客户端服务发现可以以Netflix的Eureka,CoreOS的etcd以及xxx的Consul为代表,提供了单独的服务发现和注册中心??突Ф嗽诮性冻痰饔檬?,首先通过服务发现和注册中心获取到要访问的目标服务实例信息;根据客户端负载均衡策略选择实例,再发起API的远程调用。
    服务器端服务发现
    服务器端服务发现模式主要以DNS为代表,相关的工具包括Consul以及一些平台如Kubernetes、Rancher等都提供了基于DNS服务发现注册能力。服务请求转发由平台或者工具提供相关的能力(如Health Check)支持,用于维护DNS代理的后端实例信息。

                                   
    登录/注册后可看大图
    在服务无状态的前提下,基于DNS可以简化在代理过程中的Http请求次数,降低由于网络或者其他不稳定因数导致的服务远程调用失败。
    二、在Kubernetes下使用Zuul创建API网关
    创建服务实例
    1.创建应用Deployment
    构建应用镜像后通过Deployment文件可以将应用部署到k8s环境中

                                   
    登录/注册后可看大图


    2.添加服务健康检测探针

    通过设置Pod的liveness和readiness可以提升应用程序的稳定性,并且可以基于k8s的自身调度机制实现服务的自愈。同时在对服务进行滚动升级过程中,也可以避免k8s将请求发送到不健康的服务实例当中

    . liveness探针用于检测服务的运行状态

    . readiness探针用于服务状态是否正常


                                   
    登录/注册后可看大图

    3.创建Service,用于集群内服务的相互访问

    通过以下命令可以快速创建一个servicea的svc资源,在集群内部可以其它容器可以通过service.namespace.svc.cluster.local进行访问。在同一namespace下的可以直接使用service进行访问。


                                   
    登录/注册后可看大图
    创建API Gateway实例
    1.基于Spring Cloud Zuul创建API Gateway代理应用

                                   
    登录/注册后可看大图

    2.设置关闭基于Eureka的服务发现
    默认情况下Zuul会自动完成基于Eureka的服务发现能力对接,这里需要关闭相关功能

                                   
    登录/注册后可看大图

    3.设置Zuul反向代理的Http Header穿透
    在某些情况下需要设置哪些Http Header可以通过代理层下发到服务中

                                   
    登录/注册后可看大图
    4.设置根服务路由
    代理根路径请求(//gateway:8080/)到特定服务时使用在routes节点下使用root

                                   
    登录/注册后可看大图
    5.设置其他服务路由
    设置其他服务的router代理路径,如下所示客户端可以通过访问api gateway的/servicea将请求代理到servicea(//gatewat:8080/servicea/api/xxx -> //servicea:8081/api/xxx)

                                   
    登录/注册后可看大图


    6.设置基于DNS的路由请求超时时长

    对于API Gateway设施合理的超时时间,可以在服务发生异常时,快速失败。

    . 当使用服务发现时,通过设置ribbon.ReadTimeout和ribbon.SocketTimeout可以配置服务的超时时间。

    . 当使用URL进行路由时,则需要设施zuul.host.connect-timeout-millis和zuul.host.socket-timeout-millis来控制超时时间。


                                   
    登录/注册后可看大图
    要点小结

    . 简化代理过程:使用DNS减少服务代理过程中的请求数,提高效率降低风险;

    . 反脆弱性:在Kubernetes下对服务添加liveness和readness探针;

    . 合理设施代理超时时间,避免因为不合理的超时时间导致正常调用失败,由于服务变慢导致系统变慢。


    routeros
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    QQ|小黑屋|手机版|Archiver|广西11选5历史 ( 渝ICP备15001194号-1,渝公网安备 50011602500124号 )

    GMT+8, 2019-3-26 17:54 , Processed in 0.132804 second(s), 21 queries , Gzip On, MemCache On.

    Powered by Discuz! X3.4 Licensed

    © 2001-2017 Comsenz Inc.

    快速回复 广西11选5历史 返回列表
  • 宁陵县:法院家事的实践与创新 2019-03-24
  • 日照:前5个月日照税收比重居山东省第二位 2019-03-22
  • 武警部队“长城-2018”反恐国际论坛在京开幕 2019-03-22
  • 税费“红包”助推高质量发展 2019-03-21
  • 电影人共聚“微博电影之夜” 张艺谋:如果不当导演就当守门员 2019-03-21
  • 陕西拍摄到野化放归林麝活动影像 放归林麝已度过危险期 2019-03-15
  • 国宝级黄腹角雉住进三清山 2019-03-15
  • 王石田朴珺罕见亲密写真曝光 女方喂男方冰淇淋娇羞甜蜜 2018-11-22
  • 世界很多国家想拥有核弹,但迫于种种原因而没能实现。 2018-11-21
  • 人事 江西两设区市任免一批领导干部 2018-11-20