您的位置:首页 > 编程语言 > Java开发

4位网关高手论道:什么才是好的微服务网关?

2017-08-24 15:17 513 查看
​8月20号,Spring Cloud中国社区携手秦苍科技成功举办上海网关专题会议。4位来自一线互联网公司资深架构师刘石明、林丹、许进、罗辉分享了网关建设心得。53位来自不同行业的技术人员来到现场,气氛热烈。

上海秦苍信息科技有限公司,是国内领先金融科技公司,专注为中国年轻人群提供消费分期服务。历史用户数约200万。旗下“买单侠”面向中国年轻蓝领用户,提供移动端消费分期服务,平均2.8分钟出审核结果,实现实时放款。

 

在API网关的研发经历上,秦苍科技的架构师林丹介绍了公司API网关从无到有,从一到多,从单一到多元的经验。API网关分为接入层网关和应用层网关。接入层API网关可以作为入口网关,面向web应用、面向mobile应用和面向物联网设备,也可以作为面向合作渠道的出口网关,而应用层API网关主要的服务对象是内部服务。

 

由于买单侠微服务技术路线采用SpringCloud,基于Netflix开源的基础组件搭建基础设施,例如服务注册中心Eureka,在API网关选项中,考虑和Eureka、Ribbon等的兼容,Zuul成了秦苍科技的不二选择。


秦苍科技为什么选择Zuul

秦苍科技采用分组原则和单一入口原则对服务分组。紧密相关的服务构成一个组(应用),组内所有服务通过一个API网关暴露服务。外部服务只能通过API网关调用组内服务。



秦苍科技(买单侠)API网关方案



秦苍科技架构师林丹

在保障基本路由转发外,API网关更在秦苍科技的微服务治理中扮演重要角色,随着规模化管理和业务需求的快速增长,其在服务分组管控、灰度发布、熔断监控、容器化迁移、统一出入口管理等场景都有深入实践,并且还在不断演进发展中。

 

Spring Cloud中国社区发起人许进介绍,Spring Cloud在中国发展不过数年,但已经有秦苍科技、华为、上汽通用、饿了么、点融等28家企业率先使用Spring Cloud技术。API网关提供API全托管服务,帮助企业管理大规模的API,降低管理成本,实现协议适配、协议转发、安全策略(WAF)、防刷、流量管控、日志监控等功能。



网关介绍

API网关有流量管控、安全防护、统一接入、协议适配的作用。API网关为企业移动应用提供统一接入服务,常用于负载均衡、容灾切换等场景,因此对性能、并发性、可靠性都有非常高的要求。



Spring Cloud中国社区发起人许进

API网关在监测到异常流量时,可以采取服务降级、熔断的措施,可以对流量进行灵活动态的管控。API网关也起到安全防护的功能,提供IP黑名单和URL黑名单,也可以自定义各种安全规则,起到防恶意攻击的作用。

除此之外,网关在前端系统(http、http2)和后端业务(RPC)起到协议适配的作用,提供长、短连接支持,根据前端请求路由至相应的后端微服务并执行,返回结果给前端。

 



SpringCloud Zuul的架构图

许进分享了自研API网关的心得。API网关配置方面,可以配置灰度策略、回滚策略并且实时生效。API网关安全方面,可以设置安全规则,实施流量管控等,达到应用防火墙的作用。最后API网关监控方面,可以进行告警,流量监控等操作。

                                                 

饿了么面临着节假日流量洪峰的挑战,饿了么资深工程师罗辉介绍,饿了么有来自商户、用户、骑手APP三个不同入口的流量压力,集中在上午10点、下午4点左右和晚上。每天有千万级订单,如何快速解决故障,保护后端服务变成了重中之重。



 饿了么资深工程师罗辉

饿了么采用API网关提升稳定性,其API网关实现了各种过滤器,如限流、熔断、跨域、缓存、反爬虫、用户画像和异地多活路由。



饿了么异地多活机房路由

在异地多活应用场景中,饿了么在阿里云和腾讯云都建立了API router,在北京和上海都有数据中心。用户流量路由将用户、商户、骑手根据地理位置路由对应到不同的数据中心,数据中心的数据可以相互复制,为系统的稳定性、可用性提供了保障。

 

点融网资深架构师刘石明在会上分享了《我们是如何利用 gRPC做服务化及网关》,gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动应用和 HTTP/2 设计,目前提供 C、Java 和 Go 语言版本。刘石明还介绍了点融网的API网关实践:Saluki
Gateway。



点融网资深架构师刘石明

对于网关建设的进一步发展,大家展开了讨论,罗辉认为,网关的稳定性建设十分重要。



     gRPC架构图

好的网关,不仅能够保护后端,还能保护自己,同时能够满足紧急扩容的需要。如何防范DDOS攻击,识别爬虫,规范每次发布的代码,在未来还有很多可以深入探讨和分享的主题。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息