服务网关 Service Gateway

微服务架构把网站从一个单体结构拆分为多个独立服务的集合

单体结构,各个模块都在一起

微服务结构,各服务模块独立部署

带来了很多好处,例如,提高了系统稳定性、使资源利用最大化、提高了开发部署效率等等(更详细介绍请看“微服务架构”) 同时也产生了一个问题,例如客户端要展示商品信息页面,页面中需要有:商品详情、用户评论、相关商品推荐、购物车信息 在单体结构中,这个需求的实现很简单,客户端发起一个商品详情的请求,如 http://api.xxx.com/product/id

网站收到请求后进行查询计算等操作,把需要的信息组合成一个结果集,返回给客户端

而在微服务架构中,这个需求中的数据是分布在不同的微服务中,例如: 商品详情 - 商品信息服务 用户评论 - 评论服务 商品推荐 - 推荐服务 购物车信息 - 购物车服务 这就需要客户端调用不同的服务来获取数据

这种方式中,客户端需要了解很多api,服务端如果产生微服务的再次拆分或合并,客户端都需要跟着变动,维护复杂,而且每个页面都可能需要发起多次请求,性能不好 对于这些问题,就可以采用“服务网关”的方式来解决 服务网关也是个服务器,作为网站的入口,客户端不再自己调用N个服务获取数据,还是像单体结构一样,客户端发送一个请求给服务网关,服务网关负责调用多个微服务聚合结果,返回给客户端

优点 (1)外部系统从服务网关上看到的就像是一个统一的完整服务,网关屏蔽了后台服务的复杂性,同时也屏蔽了后台服务的升级和变化 (2)外部请求必须经过服务网关,网关可以集中对访问进行安全控制,如认证授权、防爬虫等 (3)在流量高峰期,服务网关可以限制流量,在内部系统出现故障时,网关可以集中做容错,保持外部良好的用户体验 (4)便于收集访问日志 缺点 服务网关本身形成了一个系统,需要开发、部署、维护管理,成本较高,而且,服务网关可能会成为系统瓶颈 但服务网关方式的优势明显,已被普遍采用

原文发布于微信公众号 - 性能与架构(yogoup)

原文发表时间:2016-03-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

十个免费的 Web 压力测试工具

本文列举了是十个免费工具,可以用来进行Web的负载/压力测试的。这样你就可以知道你的服务器以及你的WEB应用能够扛得住多少的并发量,以及网站性能。 0. Gr...

1.1K60
来自专栏杨建荣的学习笔记

MySQL备份恢复的自动化设计

MySQL的备份恢复是一直想要改进的地方,其中恢复是重中之重,这部分的工作要做成平台化的工作,算是有了前期的很多铺垫和延迟,最近在和同事的共同协作下,总算有了一...

22340
来自专栏实用工具入门教程

如何部署 Python 开发环境

Python是一种灵活的多功能编程语言,可用于许多用例,具有脚本,自动化,数据分析,机器学习和后端开发的优势。1991年首次出版,其名称灵感来自英国喜剧组织Mo...

39600
来自专栏网商云

腾讯云一台服务器多IP的超详细配置linux

新账号关联我们公司购买腾讯云产品,有优惠哦!联系电话:13430587834(微信同号)

7.3K150
来自专栏快乐八哥

Angular企业级开发(1)-AngularJS简介

AngularJS介绍 AngularJS是一个功能完善的JavaScript前端框架,同时是基于MVC(Model-View-Controller理念的框架,...

24780
来自专栏蛋未明的专栏

PHP压测优化

30030
来自专栏架构师之路

极限优化:php巧用tcp长连接

上一期,和大家分享了YouTube系统架构,本期将和大家分享一个大并发下php使用tcp长连接访问后端的优化方法。 php巧用TCP长连接优化 一、面向人群 如...

71840
来自专栏开源优测

JMeter性能测试基本过程及示例

性能测试是我们日常测试过程中,必须掌握的技能。通过进行性能测试,我们能分析服务端的整体性能、负载等,以便进一步评估我们的业务系统是否能满足当前运营生产及未来业务...

12920
来自专栏月色的自留地

mac电脑进行可见光通信实验要点

12560
来自专栏全华班

一款免费、开源,使用JAVA语言开发管理系统

基于SpringBoot2.0的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

2K20

扫码关注云+社区

领取腾讯云代金券