日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringCloud Ribbon(五)之服务实例列表ServerList

發(fā)布時間:2023/12/3 javascript 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringCloud Ribbon(五)之服务实例列表ServerList 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、服務實例列表ServerList

服務實例列表(ServerList)為負載均衡器(Loadbalancer)提供服務的可用實例列表。

負載均衡器(Loadbalancer)通過服務實例列表(ServerList)從注冊中心(register)或者配置文件(yaml或properties)上讀取全部服務實例(server),然后以服務實例過濾器(ServerListFilter)的過濾方式進行篩選留下滿足條件的服務實例,進而借助負載均衡策略(IRule)選擇出一個合適的服務實例。

?

二、ServerList實現(xiàn)類

NacosServerList? ?nacos服務發(fā)現(xiàn)提供的ServerList

ConfigurationBasedServerList? ?從配置文件讀取靜態(tài)的服務實例定義

StaticServerList? 靜態(tài)ServerList創(chuàng)建包含不變的服務實例(server)

?

三、具體代碼實現(xiàn)

(1)NacosServerList? ?

public class NacosServerList extends AbstractServerList<NacosServer> {private NacosDiscoveryProperties discoveryProperties;private String serviceId;public NacosServerList(NacosDiscoveryProperties discoveryProperties) {this.discoveryProperties = discoveryProperties;}@Overridepublic List<NacosServer> getInitialListOfServers() {return getServers();}@Overridepublic List<NacosServer> getUpdatedListOfServers() {return getServers();}private List<NacosServer> getServers() {try {List<Instance> instances = discoveryProperties.namingServiceInstance().selectInstances(serviceId, true);return instancesToServerList(instances);}catch (Exception e) {throw new IllegalStateException("Can not get service instances from nacos, serviceId=" + serviceId,e);}}private List<NacosServer> instancesToServerList(List<Instance> instances) {List<NacosServer> result = new ArrayList<>();if (null == instances) {return result;}for (Instance instance : instances) {result.add(new NacosServer(instance));}return result;}public String getServiceId() {return serviceId;}@Overridepublic void initWithNiwsConfig(IClientConfig iClientConfig) {this.serviceId = iClientConfig.getClientName();} }

(2)ConfigurationBasedServerList?

public class ConfigurationBasedServerList extends AbstractServerList<Server> {private IClientConfig clientConfig;@Overridepublic List<Server> getInitialListOfServers() {return getUpdatedListOfServers();}@Overridepublic List<Server> getUpdatedListOfServers() {String listOfServers = clientConfig.get(CommonClientConfigKey.ListOfServers);return derive(listOfServers);}@Overridepublic void initWithNiwsConfig(IClientConfig clientConfig) {this.clientConfig = clientConfig;}protected List<Server> derive(String value) {List<Server> list = Lists.newArrayList();if (!Strings.isNullOrEmpty(value)) {for (String s: value.split(",")) {list.add(new Server(s.trim()));}}return list;} }

(3)StaticServerList?

public class StaticServerList<T extends Server> implements ServerList<T> {private final List<T> servers;public StaticServerList(T... servers) {this.servers = Arrays.asList(servers);}@Overridepublic List<T> getInitialListOfServers() {return servers;}@Overridepublic List<T> getUpdatedListOfServers() {return servers;}}

?

總結

以上是生活随笔為你收集整理的SpringCloud Ribbon(五)之服务实例列表ServerList的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。