微服务网关用什么好(微服务网关有哪些)

网友投稿 224 2023-01-08


本篇文章给大家谈谈微服务网关用什么好,以及微服务网关有哪些对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 今天给各位分享微服务网关用什么好的知识,其中也会对微服务网关有哪些进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

微服务网关层

API网关是所有客户端的统一入口。路由服务可以被用于很多目的,例如日志、限流、认证,从而做到应用无感知。API网关对于任意一种处理请求有两种方式处理。一部分请求只要简单路由到相应的服务;还有一些请求需要拆分到多个服务。API Gateway是实现微服务重要的组件之一,常用的网关Zuul, Nginx, Spring Cloud, Linkerd,Envoy,UnderTow。

为了评估API网关各自的性能,我们使用Apache的ab作为压测工具。(另外还可以用Gatling做性能测试)

测试结果和心得如下:

服务网关Zuul

在前面的学习中,我们使用Spring Cloud实现微服务的架构基本成型,大致是这样的:

我们使用Spring Cloud Netflix中的Eureka实现了服务注册中心以及服务注册与发现;而服务间通过Ribbon或Feign实现服务的消费以及负载均衡;为了使得服务集群更为健壮,使用Hystrix的熔断机制 来避免在微服务架构中个别服务出现异常时引起的故障蔓延。

在该架构中,我们的服务集群包括:内部服务Service A和Service B,他们都会注册与订阅服务至Eureka Server,而Open Servc时一个对外的服务,通过负载均衡公开至服务调用方。我们把焦点聚集在对外服务这块,这种实现方式是否合理,有没有更好的实现方式呢?

这种架构不足之处:

对于上面的问题,最好的解决方法是——服务网关。

为了解决上面的问题,我们需要将权限控制这样的东西从我们的服务单元中抽离出去,而最适合这些逻辑的地方就是处于对外访问最前端的地方,我们需要一个更加强大的负载均衡器——服务网关。

服务网关是微服务架构中不可或缺的的部分。通过服务网关统一向外系统提供REST API的过程中,除了具备服务路由、负载均衡之外,它还具备了权限控制等功能。Spring Cloud NetFlix中的Zuul就具备这样的功能。

Zuul是NetFlix开源的微服务网关,它可以和Eureka、Ribbon、Hystrix等组件配合使用。Zuul的核心是一些列的过滤器,这些过滤器可以完成以下功能。

Spring Cloud对Zuul进行了整合与增强。目前,Zuul使用的默认HTTP客户端是Apache HTTP Client,也可以使用使用其他的。

使用Zuul之后的架构如图所示:

从图中可以看出,客户端请求微服务时,先经过Zuul之后再请求,这样就可以将一些类似于校验的业务逻辑放到zuul中去完成,而微服务本身只需要关注自己的业务逻辑即可。

首先新建一个gateway模块,并且导入相关的依赖

然后再编写启动类增加@EnableZuulProxy注解。

接着编写application.yml文件,并添加路由规则

然后启动测试,发现可以通过zuul访问到商品微服务地址

在上面的配置中,我们通过路由规则的配置,访问到了商品微服务。但是如果商品微服务的地址发生变化,我们要修改配置问题。所以,我们应该通过走Eureka注册中心来获取地址。首先,我们需要添加Eureka依赖。

然后修改application.yml配置文件,将自己注册到注册中心。

随后,通过测试发现可以通过zuul访问商品微服务,一切正常。

过滤器是Zuul的重要组件。在我们的一般的单体应用中,也会使用过滤器过滤请求,或者完成相关的权限配置等,例如shiro框架就是用过滤器管理权限的。Zuul中的过滤器名为ZuulFilter:

ZuulFilter是一个抽象类,其实现类需要实现4个方法:

过滤器的执行流程如图所示:

需求:通过编写过滤器实现用户是否登录的检查
实现:通过判断请求中是否有token,如果有认为就是已经登录的,如果没有就认为时非法请求,响应401.

接下来,我们需要编写一个UserLoginZuulFilter,逻辑如下:

随后,我们打开浏览器进行测试,可以看到过滤器已经生效:

开源推荐-C++开发的微服务框架Tars

Tars致力于建设微服务技术生态,在底层基础设施、服务框架、上层应用以及DevOps等方面,都做了较为深入的研发。

2020年3月10日,Linux基金会正式宣布旗下的TARS开源项目成立TARS子基金会。这是一个 专注于微服务领域 的开源基金会,致力于帮助企业拥抱微服务体系架构,解决在使用微服务方面可能出现的问题。这是首个 起源于中国开源项目 的国际开源基金会,也是Linux基金会下 唯一聚焦微服务技术生态 的子基金会。

Tars基金会里目前收录了9个项目,分为5部分:工具集(Tars Lab)、服务治理(Service Governance)、微服务开发框架(Development Framwork)、存储(DCache)和基础设施(Infrustructure)。

1、Tars Lab

Tars Lab项目提供了压力测试TarsJMeter,基准测试集TarsBenchmark和一些开发工具包。TarsJavaStart,可以生成服务端和客户端的TarsJava脚手架,快速开始Tars服务的开发。TarsTools,是一款支持多种IDE的JetBrains插件,为实现编辑Jce/Tars文件使用的(支持Intellij IDEA、Android Studio、PhpStorm、WebStorm、GoLand、CLion等)。

2、服务治理

服务治理包含了2个项目:TSeer专注于处理服务注册与发现;TarsGateway是基于Tars框架开发的微服务网关,除具备网关的基础功能外,还可以自动将HTTP转换成Tars-RPC协议。

3、微服务开发框架

这部分只包含Tars一个项目,核心模块由C++开发,提供了多语言开发框架,默认rpc调用,是Tars基金会的核心项目。其他项目都是围绕这个项目研发的。

4、微服务存储

这部分只包含DCache一个项目,它是基于Tars框架开发的 分布式共享内存存储系统 ,支持常用的kv数据结构、支持二级索引、支持在线扩缩容、支持自动持久化到后端db等特性。DCache依赖Tars框架的运行,但也得益于Tars,使得存储服务的运维成本几乎为0。

5、微服务基础设施

这是一个将Tars与K8S融合使用的项目,致力于将Tars融入到K8S生态中。

在这方面还有一个更优秀的项目K8SFramework,致力于将Tars与K8S深度融合,相信未来会纳入到基金会中。

| Tars的前世今生

Tars的前身是腾讯内部的TAF框架,已经经过了10年的验证,稳定运行与1.6w+服务器,100多个业务线中。

据统计, Tars已在超过 120 家公司、 261200 台服务器上稳定运行。

在分布式环境下,所有的微服务(包括DCache的服务)都可以通过框架自带的控制台-TarsWeb进行管理, 可以做到所有服务状态可监控,可以在控制台上进行启停、修改配置、执行运维指令等操作。

在分布式部署的情况下,可以通过Web控制台实现一键升级、回退。

Tars自带配置中心,分级配置,可以统一修改配置,做到“一点修改,全局生效”。

在服务部署时,可以在界面上填写要发布的节点,一键部署、扩容。

框架提供了状态监控的能力,可以监控服务的调用质量,如流量情况,平均耗时、超时率和异常率。

框架状态可以在控制台上一键核查。

Tars提供配套的性能测试工具,这也是Tars基金会的子项目。性能测试工作不再依赖专业的测试人员。

| Tars优势

1、原生RPC调用

Tars使用自研的RPC协议通信,服务之间建立长连接,在通信频繁的场景下具备显著的性能优势。

2、多语言支持

除C++和Java外,Tars还支持NodeJs,PHP,Go等语言,提供了相应的SDK。当团队技术栈多样化时,可以多语言协同开发,无缝对接,开发者可以选择自己熟悉的语言进行开发,提升团队整体效率。

在这方面,Spring Cloud想要支持异构语言,需要借助SideCar构建Service Mesh。 业界现在有一些比较流行的服务网格解决方案,但是 并没有形成统一的标准 , 可移植性不高 。比较常见的像Istio,由于是代理模式,而且非长连接,会存在 更大的延迟 。另一方面,Istio的部署和运维都非常 复杂 ,需要更多的学习成本和运维成本。

3、内置服务治理功能

Tars框架内嵌了丰富的服务治理功能,包括熔断、限流、负载均衡、认证、加密等。同时,在服务监控、数据采集,以及灰度部署、跨机房部署等方面,都原生支持,集成度高。

Spring Cloud要支持这些功能,要么需要集成其他组件,要么需要设计开发来实现。都需要付出额外的学习成本和研发成本。

4、运维监控

Tars为使用者提供了一体化的运维管理控制台,我们可以在Web上进行一键部署、扩容、升级、回退等运维操作。

Spring Cloud并没有配套的工具。要实现Web管控, 需要借助K8S和容器,同样需要付出额外的成本。

5、国产化

Tars是国内公司主导的开源项目,这一点就不多说什么了。

6、“套装”优势

Tars框架提供了微服务相关的一体化解决方案,常规情况下不需要再去集成其他组件,不存在兼容性问题。这就好比MacBook和兼容机的区别,兼容机你可能需要付出更多的试错成本才能达到想要的效果。

| 劣势

1、项目热度

Tars开源较晚,到目前只有5年多时间,项目热度不如Spring Cloud,应用也没Spring Cloud广泛。

2、Tars的云原生之路

Tars和K8s的深度融合也开源不久(2020年7月,K8SFramework),还有待落地验证。这个项目现在的更新频率较高,不建议在生产中使用。但是从这一点也可以看到社区工作者对Tars与K8S融合的高涨热情,相信未来这个项目一定会大放异彩!

Tars在微服务开发、运维、监控等方面提供了一体化的解决方案,可以帮助我们低成本构建企业级微服务。适用于各种规模的团队,各种规模的系统。

在做技术选型时,如果团队中有C++开发人员,或者有多语言开发的情况,而且团队规模、资源有限的情况下,建议选择Tars。它在运维、监控、测试等方面会为我们节约大量成本。

未来,随着 K8SFramework 项目的日渐成熟,相信Tars生态会被更多的团队熟知和使用。

关于微服务网关用什么好和微服务网关有哪些的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。 微服务网关用什么好的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于微服务网关有哪些、微服务网关用什么好的信息别忘了在本站进行查找喔。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Java中invokedynamic字节码指令问题
下一篇:java实现字符串和数字转换工具
相关文章

 发表评论

暂时没有评论,来抢沙发吧~