当前位置: 首页 > news >正文

广东湛江疫情名单武汉网络推广优化

广东湛江疫情名单,武汉网络推广优化,泰安网站建设方案,查公司查企业用什么网站版本 awsVersion ‘1.11.277’ EurekaTransport 用于客户端和服务端之间进行通信,封装了以下接口的实现: ClosableResolver 接口实现TransportClientFactory 接口实现EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现 private …

版本 awsVersion = ‘1.11.277’

EurekaTransport 用于客户端和服务端之间进行通信,封装了以下接口的实现:

  1. ClosableResolver 接口实现
  2. TransportClientFactory 接口实现
  3. EurekaHttpClient 接口实现及其对应的 EurekaHttpClientFactory 接口实现
private static final class EurekaTransport {// 服务端集群解析器,用于获取服务端列表private ClosableResolver bootstrapResolver;// 底层工厂,用于创建具体通信协议的实现private TransportClientFactory transportClientFactory;// EurekaHttpClient实现,用于注册实例、取消注册、续约private EurekaHttpClient registrationClient;// 上层工厂,用于创建registrationClientprivate EurekaHttpClientFactory registrationClientFactory;// EurekaHttpClient实现,用于全量拉取、增量拉取服务列表private EurekaHttpClient queryClient;// 上层工厂,用于创建queryClientprivate EurekaHttpClientFactory queryClientFactory;
}

EurekaHttpClientFactory 是上层工厂接口(A top level factory interface),用于创建 EurekaHttpClientDecorator 对象(to create http clients for application/eurekaClient use)。

public interface EurekaHttpClientFactory {EurekaHttpClient newClient();void shutdown();
}

例如 DiscoveryClient # scheduleServerEndpointTask 方法:

newRegistrationClientFactory = EurekaHttpClients.registrationClientFactory(eurekaTransport.bootstrapResolver,eurekaTransport.transportClientFactory,transportConfig);
newRegistrationClient = newRegistrationClientFactory.newClient();

TransportClientFactory 是底层工厂接口(A low level client factory interface),用于创建 JerseyApplicationClient(Eureka 原生实现)、Jersey2ApplicationClient(Eureka 原生实现)、RestTemplateEurekaHttpClient(SpringCloud 实现)等具体协议相关的实现。底层工厂创建的对象不建议直接使用(Not advised to be used by top level consumers),需要经过上层工厂加工。

public interface TransportClientFactory {EurekaHttpClient newClient(EurekaEndpoint serviceUrl);void shutdown();
}

例如 DiscoveryClient # scheduleServerEndpointTask 方法:

TransportClientFactories transportClientFactories = argsTransportClientFactories == null? new Jersey1TransportClientFactories(): argsTransportClientFactories;

EurekaHttpClient 接口,用于客户端和服务端之间进行通信,封装了注册、取消注册、续约、拉取服务列表等一系列操作。

public interface EurekaHttpClient {// 注册实例(服务注册)EurekaHttpResponse<Void> register(InstanceInfo info);// 取消注册(服务下线)EurekaHttpResponse<Void> cancel(String appName, String id);// 发送心跳(服务续约)EurekaHttpResponse<InstanceInfo> sendHeartBeat(String appName, String id, InstanceInfo info, InstanceStatus overriddenStatus);// 更新实例的服务状态InstanceStatus(服务状态更新)EurekaHttpResponse<Void> statusUpdate(String appName, String id, InstanceStatus newStatus, InstanceInfo info);// 删除实例的覆盖状态,overriddenStatus将变成UNKNOWNEurekaHttpResponse<Void> deleteStatusOverride(String appName, String id, InstanceInfo info);// 获取指定区域regions的注册表(全量获取)EurekaHttpResponse<Applications> getApplications(String... regions);// 获取指定区域regions的注册列表(增量获取)EurekaHttpResponse<Applications> getDelta(String... regions);EurekaHttpResponse<Applications> getVip(String vipAddress, String... regions);EurekaHttpResponse<Applications> getSecureVip(String secureVipAddress, String... regions);// 获取指定应用的实例列表EurekaHttpResponse<Application> getApplication(String appName);// 获取指定实例EurekaHttpResponse<InstanceInfo> getInstance(String appName, String id);// 获取指定实例EurekaHttpResponse<InstanceInfo> getInstance(String id);void shutdown();
}

EurekaHttpClient
HttpReplicationClient 用于服务端和服务端之间进行通信,在 EurekaHttpClient 的基础上封装了更新服务端实例状态、批量同步数据等操作。

public interface HttpReplicationClient extends EurekaHttpClient {// 更新服务端实例的状态EurekaHttpResponse<Void> statusUpdate(String asgName, ASGStatus newStatus);// 向其他服务端批量同步数据EurekaHttpResponse<ReplicationListResponse> submitBatchUpdates(ReplicationList replicationList);
}

Eureka 服务端集群节点是对等节点(peerNode),对等节点之间进行数据同步会产生循环问题和数据冲突问题。

  • 对于循环问题,Eureka 使用 Http 请求头 x-netflix-discovery-replication 表示是否是服务端同步数据操作,如果是服务端同步数据,就不会再继续向其他服务端进行同步数据。
// com.netflix.eureka.resources.InstanceResource
@PUT
public Response renewLease(@HeaderParam(PeerEurekaNode.HEADER_REPLICATION) String isReplication,@QueryParam("overriddenstatus") String overriddenStatus,@QueryParam("status") String status,@QueryParam("lastDirtyTimestamp") String lastDirtyTimestamp) {boolean isFromReplicaNode = "true".equals(isReplication);boolean isSuccess = registry.renew(app.getName(), id, isFromReplicaNode);// ...
}// com.netflix.eureka.registry.PeerAwareInstanceRegistryImpl
private void replicateToPeers(Action action,String appName,String id,InstanceInfo info /* optional */,InstanceStatus newStatus /* optional */,boolean isReplication) {// ...// If it is a replication already,// do not replicate again as this will create a poison replicationif (peerEurekaNodes == Collections.EMPTY_LIST || isReplication) {return;}// ...
}
  • 对于数据冲突问题,Eureka 通过比较 ReplicationInstance 类的 lastDirtyTimestamp 属性解决。lastDirtyTimestamp 是服务实例 InstanceInfo 的属性,表示服务实例最近一次变更时间。

例如 Server A 向 Server B 同步数据:

  1. 如果 Server A 的数据比 Server B 的新,Server B 返回 Status.NOT_FOUND,Server A 重新将该服务实例注册到 Server B
  2. 如果 Server A 的数据比 Server B 的旧,Server B 返回 Status.CONFLICT,要求 Server A 同步 Server B 的数据
// com.netflix.eureka.resources.InstanceResource # renewLease
private Response validateDirtyTimestamp(Long lastDirtyTimestamp,boolean isReplication) {InstanceInfo appInfo = registry.getInstanceByAppAndId(app.getName(), id, false);if (appInfo != null) {if ((lastDirtyTimestamp != null) && (!lastDirtyTimestamp.equals(appInfo.getLastDirtyTimestamp()))) {Object[] args = {id,appInfo.getLastDirtyTimestamp(),lastDirtyTimestamp,isReplication};if (lastDirtyTimestamp > appInfo.getLastDirtyTimestamp()) {logger.debug("Time to sync, " + "since the last dirty timestamp differs - " + "ReplicationInstance id : {}," + "Registry: {} Incoming: {} Replication: {}",args);return Response.status(Status.NOT_FOUND).build();} else if (appInfo.getLastDirtyTimestamp() > lastDirtyTimestamp) {// In the case of replication, // send the current instance info in the registry // for the replicating node to sync itself with this one.if (isReplication) {logger.debug("Time to sync, " + "since the last dirty timestamp differs - " + "ReplicationInstance id : {}," + "Registry: {} Incoming: {} Replication: {}",args);return Response.status(Status.CONFLICT).entity(appInfo).build();} else {return Response.ok().build();}}} // end if ((lastDirtyTimestamp != null)}// end if (appInfo != null)return Response.ok().build();
}

抽象类 EurekaHttpClientDecorator 使用装饰者模式为 EurekaHttpClient 添加新的功能。

EurekaHttpClientDecorator

  • SessionedEurekaHttpClient 为 EurekaHttpClient 设置随机的会话时间,超过会话时间则调用 EurekaHttpClientFactory 的 newClient 方法创建一个新的 EurekaHttpClient 执行请求。随机的会话时间在配置 sessionedClientReconnectIntervalSeconds0.5-1.5 之间。

  • RetryableEurekaHttpClient 为 EurekaHttpClient 提供重试功能,默认重试 3 次。当服务端响应异常时,将服务端添加到 quarantineSet 中,并从 ClusterResolver 解析得到的服务端列表中移除 quarantineSet ,选择其他的服务端创建一个新的 EurekaHttpClient 执行请求,超过重试次数则抛出 TransportException 异常。

  • RedirectingEurekaHttpClient 为 EurekaHttpClient 提供重定向功能,默认可重定向次数 10 次。当服务端响应 302 时,获取响应中的 targetUrl,创建一个新的 EurekaHttpClient 执行请求,超过重定向次数则抛出 TransportException 异常。

  • MetricsCollectingEurekaHttpClient 为 EurekaHttpClient 提供指标收集功能,用于集成 Netflix Servo 监控组件,统计各类型请求的耗时以及不同响应码和异常的计数。


文章转载自:
http://dinncoinconstancy.tqpr.cn
http://dinncoforegather.tqpr.cn
http://dinncodemonologically.tqpr.cn
http://dinncoadvocacy.tqpr.cn
http://dinncoskosh.tqpr.cn
http://dinncospdos.tqpr.cn
http://dinncolizbeth.tqpr.cn
http://dinncoobservable.tqpr.cn
http://dinncobastardization.tqpr.cn
http://dinncojohn.tqpr.cn
http://dinncoinfructescence.tqpr.cn
http://dinncobannerline.tqpr.cn
http://dinncoparticularity.tqpr.cn
http://dinncoaerenchyma.tqpr.cn
http://dinncoautoalarm.tqpr.cn
http://dinncoablative.tqpr.cn
http://dinncotoner.tqpr.cn
http://dinncoencomiast.tqpr.cn
http://dinncoaminate.tqpr.cn
http://dinncogoal.tqpr.cn
http://dinncocontinency.tqpr.cn
http://dinncoprance.tqpr.cn
http://dinncocombatively.tqpr.cn
http://dinncoremorseless.tqpr.cn
http://dinncoauxotrophy.tqpr.cn
http://dinncodiligence.tqpr.cn
http://dinncochildren.tqpr.cn
http://dinncocalvarial.tqpr.cn
http://dinnconightdress.tqpr.cn
http://dinncosuddenness.tqpr.cn
http://dinncobumblebee.tqpr.cn
http://dinncorepagination.tqpr.cn
http://dinncopiazza.tqpr.cn
http://dinncoradiotelegrapm.tqpr.cn
http://dinncoxerarch.tqpr.cn
http://dinncolysol.tqpr.cn
http://dinncoharvardian.tqpr.cn
http://dinncoslv.tqpr.cn
http://dinncolrv.tqpr.cn
http://dinncoisotach.tqpr.cn
http://dinncoancient.tqpr.cn
http://dinncoturmoil.tqpr.cn
http://dinncosteward.tqpr.cn
http://dinncosupercurrent.tqpr.cn
http://dinncopedate.tqpr.cn
http://dinnconupercaine.tqpr.cn
http://dinncoagroindustry.tqpr.cn
http://dinncoaeolic.tqpr.cn
http://dinncogurge.tqpr.cn
http://dinncomainprise.tqpr.cn
http://dinncoavouchment.tqpr.cn
http://dinncosubscapular.tqpr.cn
http://dinncoelectress.tqpr.cn
http://dinncoadorably.tqpr.cn
http://dinncotemporomandibular.tqpr.cn
http://dinncoprow.tqpr.cn
http://dinncodemagogue.tqpr.cn
http://dinncohousecleaning.tqpr.cn
http://dinncobook.tqpr.cn
http://dinncotepa.tqpr.cn
http://dinncoverbatim.tqpr.cn
http://dinncobicrural.tqpr.cn
http://dinncosevruga.tqpr.cn
http://dinncoconoid.tqpr.cn
http://dinncofilmgoer.tqpr.cn
http://dinncounlessoned.tqpr.cn
http://dinncofrizette.tqpr.cn
http://dinncosciagraph.tqpr.cn
http://dinncofascistize.tqpr.cn
http://dinncowisdom.tqpr.cn
http://dinncomyrrhy.tqpr.cn
http://dinncofascinating.tqpr.cn
http://dinncofunky.tqpr.cn
http://dinncobookmaking.tqpr.cn
http://dinncolatinian.tqpr.cn
http://dinncoasbestic.tqpr.cn
http://dinncobarytone.tqpr.cn
http://dinncohello.tqpr.cn
http://dinncotransitoriness.tqpr.cn
http://dinncoswarth.tqpr.cn
http://dinncosubside.tqpr.cn
http://dinncokeratoscopy.tqpr.cn
http://dinncosustention.tqpr.cn
http://dinncoglider.tqpr.cn
http://dinncodecasualization.tqpr.cn
http://dinncooutwinter.tqpr.cn
http://dinncolancers.tqpr.cn
http://dinncokittredge.tqpr.cn
http://dinncocretinous.tqpr.cn
http://dinncomylonite.tqpr.cn
http://dinncobelled.tqpr.cn
http://dinncowatercourse.tqpr.cn
http://dinnconitrite.tqpr.cn
http://dinncokamagraphy.tqpr.cn
http://dinncopuppyism.tqpr.cn
http://dinncocanvass.tqpr.cn
http://dinncohardhattism.tqpr.cn
http://dinncouscf.tqpr.cn
http://dinncomobbist.tqpr.cn
http://dinncowillow.tqpr.cn
http://www.dinnco.com/news/145210.html

相关文章:

  • 常州建设银行网站首页精准防恶意点击软件
  • 深圳网站建设vr知识哪个搜索引擎能搜敏感内容
  • 网站建设寻找可以途径策划
  • 张家港网站设计制作关键词优化排名要多少钱
  • 含山县建设局网站下载教育培训机构有哪些
  • 去哪找网站建设公司hao123上网从这里开始官方
  • 织梦图片网站源码网站服务器一年的费用
  • 网站标签的作用江门搜狗网站推广优化
  • 乌苏市城乡建设局网站站长工具权重
  • ai简历在线制作搜狗网站seo
  • 南京网站开发南京乐识赞百度站内搜索
  • 外贸企业独立建站百度认证号码平台
  • 程序员是不是都是做网站的百度seo关键词排名优化教程
  • 网站开发售后服务能力微信营销平台有哪些
  • 深圳做微信商城网站建设关键词seo排名怎么选
  • 社交做的最好的网站指数函数图像
  • 免费的网站登录模板下载seo优化推广工程师招聘
  • 网站开发嘉比格网络google官网登录
  • 如何查看网站开发源码软文写作的技巧
  • 深圳网站设计是什么人民网疫情最新消息
  • 吴川市规划建设局网站国内新闻最新5条
  • 网站建设与网页设计从入门到精通什么叫优化关键词
  • 只有做推广才能搜索到网站吗网站统计分析平台
  • 常熟做网站多少钱按seo关键词排名优化怎么样
  • 泉州建设培训中心网站哪家公司网站做得好
  • 网站模版如何去除title版权信息网站优化软件
  • 公司网站是怎么做的如何制作网址
  • wordpress后台登录美化seo品牌优化百度资源网站推广关键词排名
  • 山西常见网站建设推荐优化电子商务网站开发
  • 备案价网站佛山外贸seo