api网关鉴权(网关鉴权怎么做)

4747 735 2022-11-20


本文目录一览:

公司内部下单系统能否用接口

应该是可以的,电子发票接口是API,API网关是提供服务开放和共享的企业级PaaS平台,提供发布管理、统一认证鉴权、流控、协议转换、服务审计等功能,帮助用户实现内部多系统间,或者内部系统与外部系统之间实现跨系统、跨协议的服务能力互通。

资料拓展:为什么需要API接口开发?

随着微服务架构的流行,API网关也越来越受欢迎。在微服务体系架构中,将应用程序划分为几个低耦合的服务(称为微服务),每个服务都有其独特的功能。尽管微服务提供了许多好处(最显着的是使它更易于开发,部署和维护应用程序的不同部分),但它们却使客户难以快速,安全地访问他们所需的信息。

API网关接口开发可以充当使用这些微服务的客户端的中央接口,从而解决其中的一些问题。客户端不必访问数十个单独的服务,而是可以向API网关发送单个请求,而API网关本身将聚集微服务。API网关的主要功能称为路由,但是使用API网关的原因还有很多。

对于服务数量众多、复杂度比较高、规模比较大的业务来说,引入API数据接口平台也有一系列的好处:

● 聚合接口使得服务对调用者透明,客户端与后端的耦合度降低

● 聚合后台服务,节省流量,提高性能,提升用户体验

● 提供安全、流控、过滤、缓存、计费、监控等API管理功能

客户合作的技术实践中,客户往往需要通过统一的API接口平台进行服务能力的共享,提供发布、管理、保护和监控接口API的能力,实现跨系统、跨协议的服务能力互通。



API网关从入门到放弃


假设你正在开发一个电商网站,那么这里会涉及到很多后端的微服务,比如会员、商品、推荐服务等等。

那么这里就会遇到一个问题,APP/Browser怎么去访问这些后端的服务? 如果业务比较简单的话,可以给每个业务都分配一个独立的域名(),但这种方式会有几个问题:

更好的方式是采用API网关,实现一个API网关接管所有的入口流量,类似Nginx的作用,将所有用户的请求转发给后端的服务器,但网关做的不仅仅只是简单的转发,也会针对流量做一些扩展,比如鉴权、限流、权限、熔断、协议转换、错误码统一、缓存、日志、监控、告警等,这样将通用的逻辑抽出来,由网关统一去做,业务方也能够更专注于业务逻辑,提升迭代的效率。

通过引入API网关,客户端只需要与API网关交互,而不用与各个业务方的接口分别通讯,但多引入一个组件就多引入了一个潜在的故障点,因此要实现一个高性能、稳定的网关,也会涉及到很多点。

API 注册

业务方如何接入网关?一般来说有几种方式。

协议转换

内部的API可能是由很多种不同的协议实现的,比如HTTP、Dubbo、GRPC等,但对于用户来说其中很多都不是很友好,或者根本没法对外暴露,比如Dubbo服务,因此需要在网关层做一次协议转换,将用户的HTTP协议请求,在网关层转换成底层对应的协议,比如HTTP - Dubbo, 但这里需要注意很多问题,比如参数类型,如果类型搞错了,导致转换出问题,而日志又不够详细的话,问题会很难定位。

服务发现

网关作为流量的入口,负责请求的转发,但首先需要知道转发给谁,如何寻址,这里有几种方式:

服务调用

网关由于对接很多种不同的协议,因此可能需要实现很多种调用方式,比如HTTP、Dubbo等,基于性能原因,最好都采用异步的方式,而Http、Dubbo都是支持异步的,比如apache就提供了基于NIO实现的异步HTTP客户端。

因为网关会涉及到很多异步调用,比如拦截器、HTTP客户端、dubbo、redis等,因此需要考虑下异步调用的方式,如果基于回调或者future的话,代码嵌套会很深,可读性很差,可以参考zuul和spring cloud gateway的方案,基于响应式进行改造。

优雅下线

性能

网关作为所有流量的入口,性能是重中之重,早期大部分网关都是基于同步阻塞模型构建的,比如Zuul 1.x。但这种同步的模型我们都知道,每个请求/连接都会占用一个线程,而线程在JVM中是一个很重的资源,比如Tomcat默认就是200个线程,如果网关隔离没有做好的话,当发生网络延迟、FullGC、第三方服务慢等情况造成上游服务延迟时,线程池很容易会被打满,造成新的请求被拒绝,但这个时候其实线程都阻塞在IO上,系统的资源被没有得到充分的利用。另外一点,容易受网络、磁盘IO等延迟影响。需要谨慎设置超时时间,如果设置不当,且服务隔离做的不是很完善的话,网关很容易被一个慢接口拖垮。

而异步化的方式则完全不同,通常情况下一个CPU核启动一个线程即可处理所有的请求、响应。一个请求的生命周期不再固定于一个线程,而是会分成不同的阶段交由不同的线程池处理,系统的资源能够得到更充分的利用。而且因为线程不再被某一个连接独占,一个连接所占用的系统资源也会低得多,只是一个文件描述符加上几个监听器等,而在阻塞模型中,每条连接都会独占一个线程,而线程是一个非常重的资源。对于上游服务的延迟情况,也能够得到很大的缓解,因为在阻塞模型中,慢请求会独占一个线程资源,而异步化之后,因为单条连接所占用的资源变的非常低,系统可以同时处理大量的请求。

如果是JVM平台,Zuul 2、Spring Cloud gateway等都是不错的异步网关选型,另外也可以基于Netty、Spring Boot2.x的webflux、vert.x或者servlet3.1的异步支持进行自研。

缓存

对于一些幂等的get请求,可以在网关层面根据业务方指定的缓存头做一层缓存,存储到Redis等二级缓存中,这样一些重复的请求,可以在网关层直接处理,而不用打到业务线,降低业务方的压力,另外如果业务方节点挂掉,网关也能够返回自身的缓存。

限流

限流对于每个业务组件来说,可以说都是一个必须的组件,如果限流做不好的话,当请求量突增时,很容易导致业务方的服务挂掉,比如双11、双12等大促时,接口的请求量是平时的数倍,如果没有评估好容量,又没有做限流的话,很容易服务整个不可用,因此需要根据业务方接口的处理能力,做好限流策略,相信大家都见过淘宝、百度抢红包时的降级页面。

因此一定要在接入层做好限流策略,对于非核心接口可以直接将降级掉,保障核心服务的可用性,对于核心接口,需要根据压测时得到的接口容量,制定对应的限流策略。限流又分为几种:

稳定性

稳定性是网关非常重要的一环,监控、告警需要做的很完善才可以,比如接口调用量、响应时间、异常、错误码、成功率等相关的监控告警,还有线程池相关的一些,比如活跃线程数、队列积压等,还有些系统层面的,比如CPU、内存、FullGC这些基本的。

网关是所有服务的入口,对于网关的稳定性的要求相对于其他服务会更高,最好能够一直稳定的运行,尽量少重启,但当新增功能、或者加日志排查问题时,不可避免的需要重新发布,因此可以参考zuul的方式,将所有的核心功能都基于不同的拦截器实现,拦截器的代码采用Groovy编写,存储到数据库中,支持动态加载、编译、运行,这样在出了问题的时候能够第一时间定位并解决,并且如果网关需要开发新功能,只需要增加新的拦截器,并动态添加到网关即可,不需要重新发布。

熔断降级

熔断机制也是非常重要的一项。若某一个服务挂掉、接口响应严重超时等发生,则可能整个网关都被一个接口拖垮,因此需要增加熔断降级,当发生特定异常的时候,对接口降级由网关直接返回,可以基于Hystrix或者Resilience4j实现。

日志

由于所有的请求都是由网关处理的,因此日志也需要相对比较完善,比如接口的耗时、请求方式、请求IP、请求参数、响应参数(注意脱敏)等,另外由于可能涉及到很多微服务,因此需要提供一个统一的traceId方便关联所有的日志,可以将这个traceId置于响应头中,方便排查问题。

隔离

比如线程池、http连接池、redis等应用层面的隔离,另外也可以根据业务场景,将核心业务部署带单独的网关集群,与其他非核心业务隔离开。

网关管控平台

这块也是非常重要的一环,需要考虑好整个流程的用户体验,比如接入到网关的这个流程,能不能尽量简化、智能,比如如果是dubbo接口,我们可以通过到git仓库中获取源码、解析对应的类、方法,从而实现自动填充,尽量帮用户减少操作;另外接口一般是从测试-预发-线上,如果每次都要填写一遍表单会非常麻烦,我们能不能自动把这个事情做掉,另外如果网关部署到了多个可用区、甚至不同的国家,那这个时候,我们还需要接口数据同步功能,不然用户需要到每个后台都操作一遍,非常麻烦。

这块个人的建议是直接参考阿里云、aws等提供的网关服务即可,功能非常全面。

其他

其他还有些需要考虑到的点,比如接口mock,文档生成、sdk代码生成、错误码统一、服务治理相关的等,这里就不累述了。

目前的网关还是中心化的架构,所有的请求都需要走一次网关,因此当大促或者流量突增时,网关可能会成为性能的瓶颈,而且当网关接入的大量接口的时候,做好流量评估也不是一项容易的工作,每次大促前都需要跟业务方一起针对接口做压测,评估出大致的容量,并对网关进行扩容,而且网关是所有流量的入口,所有的请求都是由网关处理,要想准确的评估出容量很复杂。可以参考目前比较流行的ServiceMesh,采用去中心化的方案,将网关的逻辑下沉到sidecar中,

sidecar和应用部署到同一个节点,并接管应用流入、流出的流量,这样大促时,只需要对相关的业务压测,并针对性扩容即可,另外升级也会更平滑,中心化的网关,即使灰度发布,但是理论上所有业务方的流量都会流入到新版本的网关,如果出了问题,会影响到所有的业务,但这种去中心化的方式,可以先针对非核心业务升级,观察一段时间没问题后,再全量推上线。另外ServiceMesh的方案,对于多语言支持也更友好。

昆明java培训学校告诉你API网关设置基础知识?

如果大家了解网络构成的话,对于网关应该就不会陌生了,今天我们就一起来了解一下,API网关的一些基础知识,希望对大家以后的服务器开发工作有所帮助,下面就开始今天的主要内容吧。

一、API网关产生背景

在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器上,其实也就是对复杂的应用进行了解耦,那为什么微服务需要API网关呢?

我们看看微服务后产生的问题:

客户端需要知道多个服务地址

通用的功能怎么处理?例如鉴权、流量控制、日志等

以前一个功能可能是一次请求就可以完成,现在可能要多个服务一起进行才可以,那如何减少客户端请求的时间呢?

由于以上几点的问题,所以在所有的服务前面还需要定义一个代理,即API网关,所有的客户端请求都必须经过API网关代理到真实的服务地址,这也可以有效的避免真实地址的暴露,同时API网关也可以集成鉴权、流量控制、日志、API聚合、黑白名单等。

二、kong的介绍

Kong是由Mashape开发的并且于2015年开源的一款API网关框架,基于nginx以及OpenResty研发,主要特点是高性能以及其强大的扩展性,由于本身是基于nginx进行开发,因此网上很多关于nginx的调优等资料都可以用到kong的上面,包括负载均衡、或者充当web服务器等

kong的扩展是通过插件机制进行的,并且也提供了插件的定制示例方法,插件定义了一个请求从进入到反馈到客户端的整个生命周期,所以电脑培训认为可以满足大部分的定制需求,本身kong也已经集成了相当多的插件,包括CORS跨域、logging、限流、转发、健康检查、熔断等,API聚合功能从github上看也已经进入开发阶段。

北大青鸟设计培训:API网关设置基础知识?

如果大家了解网络构成的话,对于网关应该就不会陌生了,今天我们就一起来了解一下,API网关的一些基础知识,希望对大家以后的服务器开发工作有所帮助,下面就开始今天的主要内容吧。

一、API网关产生背景在微服务的架构中,一个大的应用会被拆分成多个小的单一的服务提供出来,这些小的服务有自己的处理,有自己的数据库(也可以共用),也许语言也是不一样的,他们可以部署在一个或多个服务器上,其实也就是对复杂的应用进行了解耦,那为什么微服务需要API网关呢?我们看看微服务后产生的问题:客户端需要知道多个服务地址通用的功能怎么处理?例如鉴权、流量控制、日志等以前一个功能可能是一次请求就可以完成,现在可能要多个服务一起进行才可以,那如何减少客户端请求的时间呢?由于以上几点的问题,所以在所有的服务前面还需要定义一个代理,即API网关,所有的客户端请求都必须经过API网关代理到真实的服务地址,这也可以有效的避免真实地址的暴露,同时API网关也可以集成鉴权、流量控制、日志、API聚合、黑白名单等。

二、kong的介绍Kong是由Mashape开发的并且于2015年开源的一款API网关框架,基于nginx以及OpenResty研发,主要特点是高性能以及其强大的扩展性,由于本身是基于nginx进行开发,因此网上很多关于nginx的调优等资料都可以用到kong的上面,包括负载均衡、或者充当web服务器等kong的扩展是通过插件机制进行的,并且也提供了插件的定制示例方法,插件定义了一个请求从进入到反馈到客户端的整个生命周期,所以电脑培训认为可以满足大部分的定制需求,本身kong也已经集成了相当多的插件,包括CORS跨域、logging、限流、转发、健康检查、熔断等,API聚合功能从github上看也已经进入开发阶段。

网关加签校验失败,请检查鉴权配置

可能是加签验签的问题。

可以检查客户端的AK/SK是否配置正确,或者检查加签的算法类型是否支持,目前仅支持SHA256算法。

关闭API或者后端系统集群的安全认证,调试是否调用成功。如果成功,则说明是加签验签的问题,再加上AK/SK之后看还是否成功。另外,检查客户端的API调用路径和分组等信息是否与网关维护的一致。

2. Readme-zh_CN.md

[图片上传失败...(image-47bff3-1555426723726)]

[图片上传失败...(image-23a1a9-1555426723726)]

[图片上传失败...(image-a9f209-1555426723726)]

[图片上传失败...(image-16fb99-1555426723726)]

个人财务的简易解决方案

This is a  proof-of-concept application , which demonstrates  Microservice Architecture Pattern  using Spring Boot, Spring Cloud and Docker。

With a pretty neat user interface, by the way。

[图片上传失败...(image-49ef69-1555426723726)]

[图片上传失败...(image-984dbb-1555426723726)]

PiggyMetrics 分解为三个核心微服务。 全部都是独立可部署应用, 根据各自的业务域进行编排。

img width="880" alt="Functional services" src="。githubusercontent。com/assets/6069066/13900465/730f2922-ee20-11e5-8df0-e7b51c668847。png"

涵盖了通用用户登录逻辑以及验证: 收入/支持 项目, 储蓄以及账户设置。

对每个账号的主要统计数据进行计算,并为捕获时序。 ( 不知道咋翻译 译者注 ) 数据点包含值,标准化为基础货币和时间段。此数据用于跟踪帐户生命周期中的现金流动态。

存储了用户通讯录信息以及通知设置 (譬如提醒和备份频率)。

定时任务从其他服务收集了需要的信息以及发送邮件消息到订阅用户。

分布式系统中有许多常见的模式,可以帮助我们使所描述的核心服务工作起来。[Spring Cloud](  )提供了增强Spring引导应用程序行为以实现这些模式的强大工具。我将简要介绍它们。

img width="880" alt="Infrastructure services" src="。githubusercontent。com/assets/6069066/13906840/365c0d94-eefa-11e5-90ad-9d74804ca412。png"

Spring Cloud Config  是用于分布式系统的水平可扩展的集中配置服务。它使用可插入的存储库层,当前支持本地存储、Git和Subversion。

在这个项目中,我使用  native profile , 它只从本地类路径加载配置文件。 你可以在  Config service resources  看到  shared  目录。

现在,当通知服务请求其配置时,使用 shared/notification-service。yml  和  shared/application。yml  (在所有客户端应用程序之间共享)。

只需只用  spring-cloud-starter-config  依赖, 自动配置就可以完成剩下的了。

现在,您不需要在应用程序中嵌入任何属性。 只需要提供  bootstrap.yml  应用名和配置中心地址:

例如, [EmailService bean](

/piggymetrics/notification/service/EmailServiceImpl.java) 使用  @RefreshScope  注解。

这就意味着不需要重启以及重新编译的情况就可以通知应用服务变更电子邮件内容和副标题。

首先将配置中心修改参数,然后,发送刷新请求以通知服务参数更新:

curl -H "Authorization: Bearer #token#" -XPOST

另外, 你也可以使用 Git 的 Webhooks  webhooks to automate this process

鉴权任务被分摊到各个微服务上,那些被  OAuth2 tokens  授权的后台服务资源。

Auth Server is used for user authorization as well as for secure machine-to-machine communication inside a perimeter。

鉴权服务器用于用户鉴权,也用于在外围环境中进行安全的机器到机器通信。。

这个项目用户鉴权方式使用的是   Password credentials   授权方式

(因为他只给本地Piggmetrics用户界面使用) ,另外微服务的授权使用   Client Credentials   授权。

Spring Cloud Security 提供了方便的注解以及自动配置使应用能够更加简单的实现服务端以及客户端的鉴权 。

在这里你可以学到更多  文档  也可以在  Auth Server code 确认详细配置。

对于客户端, 所有的鉴权工作都和原来基于 session 的鉴权方式一样, 你可以在 request 中获取  Principal  对象, 基于表达式和 @PreAuthorize 注解去验证用户的角色或者其他内容

每个PiggyMetrics的客户端(账户服务,统计服务,通知服务和浏览器)后端服务都拥有 server 作用域,浏览器则拥有 ui 。

所以我们也可以保护控制器不受外部访问的影响, 例如:

如你所见, 这边有3个核心服务,他们向其他的客户端暴露外部API接口。

在真实系统中,这个数字会随着系统的复杂性增长得非常之快。

事实上, 为了渲染一个复杂的网页可能要触发上百上千个服务。

理论上, 客户端可以直接发送请求到各个微服务供应商去。

但是很明显的问题是, 这个操作会有很大的挑战以及限制, 像是必须知道所有节点的地址, 分别对每一条信息执行HTTP请求, 然后在一个客户端去合并结果。

另一个问题是后端可能使用的是非Web友好协议。

通常来说, 使用 API 网关可能是一个更好的方法。

It is a single entry point into the system, used to handle requests by routing them to the appropriate backend service or by invoking multiple backend services and  aggregating the results 。

这样进入系统就只有一个入口, 可以通过将请求路由到适合的后端服务或者多个好多服务 aggregating the results 。

此外,它还可以用于身份验证、监控、压力和金丝雀测试、服务迁移、静态响应处理、主动流量管理。

Netflix 开源了  这样的边缘服务 ,

现在我们就可以使用 Spring Cloud 的 @EnableZuulProxy  注解去开启它。

In this project, I use Zuul to store static content (ui application) and to route requests to  appropriate

这个项目里, 我使用了 Zuul 去存储静态资源内容 ( 用户界面应用 ) 还有去路由请求到合适的微服务去。

Here's a simple prefix-based routing configuration for Notification service:

这里是一个简单的基于前缀的通知服务的路由配置:

以上配置以为着所有以  /notifications  开头的请求都会被路由到通知服务去。

这边没有往常的硬编码的地址。 Zuul 使用了  服务发现

机制去定位通知服务的所有实例然后  [负载均衡](

.md#http-client-load-balancer-and-circuit-breaker)。

另一种常见的架构模式是服务发现。

这可以自动检测到服务实例的网络位置,

它可以根据服务的故障,升级或者是自动伸缩来动态的分配地址。

服务发现的关键就是注册中心。

这个项目使用了Netflix Eureka 作为服务的注册中心。

Eureka is a good example of the client-side discovery pattern,

Eureka 是一个很好的客户端发现模式的例子,

when client is responsible for determining locations of available service instances (using Registry server) and load balancing requests across them。

With Spring Boot, you can easily build Eureka Registry with  spring-cloud-starter-eureka-server  dependency,  @EnableEurekaServer  annotation and simple configuration properties。

Client support enabled with  @EnableDiscoveryClient  annotation an  bootstrap。yml  with application name:

Now, on application startup, it will register with Eureka Server and provide meta-data, such as host and port, health indicator URL, home page etc。 Eureka receives heartbeat messages from each instance belonging to a service。 If the heartbeat fails over a configurable timetable, the instance will be removed from the registry。

Also, Eureka provides a simple interface, where you can track running services and a number of available instances:

Netflix OSS provides another great set of tools。

Ribbon is a client side load balancer which gives you a lot of control over the behaviour of HTTP and TCP clients。 Compared to a traditional load balancer, there is no need in additional hop for every over-the-wire invocation - you can contact desired service directly。

Out of the box, it natively integrates with Spring Cloud and Service Discovery。  Eureka Client  provides a dynamic list of available servers so Ribbon could balance between them。

Hystrix is the implementation of  Circuit Breaker pattern , which gives a control over latency and failure from dependencies accessed over the network。 The main idea is to stop cascading failures in a distributed environment with a large number of microservices。 That helps to fail fast and recover as soon as possible - important aspects of fault-tolerant systems that self-heal。

Besides circuit breaker control, with Hystrix you can add a fallback method that will be called to obtain a default value in case the main command fails。

Moreover, Hystrix generates metrics on execution outcomes and latency for each command, that we can use to  monitor system behavior 。

Feign is a declarative Http client, which seamlessly integrates with Ribbon and Hystrix。 Actually, with one  spring-cloud-starter-feign  dependency and  @EnableFeignClients  annotation you have a full set of Load balancer, Circuit breaker and Http client with sensible ready-to-go default configuration。

Here is an example from Account Service:

In this project configuration, each microservice with Hystrix on board pushes metrics to Turbine via Spring Cloud Bus (with AMQP broker)。 The Monitoring project is just a small Spring boot application with  Turbine  and  Hystrix Dashboard 。

See below  how to get it up and running 。

Let's see our system behavior under load: Account service calls Statistics service and it responses with a vary imitation delay。 Response timeout threshold is set to 1 second。

img width="880" src="。githubusercontent。com/assets/6069066/14194375/d9a2dd80-f7be-11e5-8bcc-9a2fce753cfe。png"

Centralized logging can be very useful when attempting to identify problems in a distributed environment。 Elasticsearch, Logstash and Kibana stack lets you search and analyze your logs, utilization and network activity data with ease。

Ready-to-go Docker configuration described  in my other project 。

Analyzing problems in distributed systems can be difficult, for example, tracing requests that propagate from one microservice to another。 It can be quite a challenge to try to find out how a request travels through the system, especially if you don't have any insight into the implementation of a microservice。 Even when there is logging, it is hard to tell which action correlates to a single request。

Spring Cloud Sleuth  solves this problem by providing support for distributed tracing。 It adds two types of IDs to the logging: traceId and spanId。 The spanId represents a basic unit of work, for example sending an HTTP request。 The traceId contains a set of spans forming a tree-like structure。 For example, with a distributed big-data store, a trace might be formed by a PUT request。 Using traceId and spanId for each operation we know when and where our application is as it processes a request, making reading our logs much easier。

The logs are as follows, notice the  [appname,traceId,spanId,exportable]  entries from the Slf4J MDC:

An advanced security configuration is beyond the scope of this proof-of-concept project。 For a more realistic simulation of a real system, consider to use https, JCE keystore to encrypt Microservices passwords and Config server properties content (see  documentation  for details)。

Deploying microservices, with their interdependence, is much more complex process than deploying monolithic application。 It is important to have fully automated infrastructure。 We can achieve following benefits with Continuous Delivery approach:

Here is a simple Continuous Delivery workflow, implemented in this project:

img width="880" src="。githubusercontent。com/assets/6069066/14159789/0dd7a7ce-f6e9-11e5-9fbb-a7fe0f4431e3。png"

In this  configuration , Travis CI builds tagged images for each successful git push。 So, there are always  latest  image for each microservice on  Docker Hub  and older images, tagged with git commit hash。 It's easy to deploy any of them and quickly rollback, if needed。

Keep in mind, that you are going to start 8 Spring Boot applications, 4 MongoDB instances and RabbitMq。 Make sure you have  4 Gb  RAM available on your machine。 You can always run just vital services though: Gateway, Registry, Config, Auth Service and Account Service。

In this mode, all latest images will be pulled from Docker Hub。

Just copy  docker-compose。yml  and hit  docker-compose up

If you'd like to build images yourself (with some changes in the code, for example), you have to clone all repository and build artifacts with maven。 Then, run  docker-compose -f docker-compose。yml -f docker-compose。dev。yml up

docker-compose。dev。yml  inherits  docker-compose。yml  with additional possibility to build images locally and expose all containers ports for convenient development。

All Spring Boot applications require already running  Config Server  for startup。 But we can start all containers simultaneously because of  depends_on  docker-compose option。

Also, Service Discovery mechanism needs some time after all applications startup。 Any service is not available for discovery by clients until the instance, the Eureka server and the client all have the same metadata in their local cache, so it could take 3 heartbeats。 Default heartbeat period is 30 seconds。

PiggyMetrics is open source, and would greatly appreciate your help。 Feel free to suggest and implement improvements。



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

上一篇:IntelliJ IDEA弹出“IntelliJ IDEA License Activation”的处理方法
下一篇:代码文档生成工具(代码生成软件的工具)
相关文章

 发表评论

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