欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

怎么把非springboot項目集成eureka

這篇文章主要介紹“怎么把非springboot項目集成eureka”,在日常操作中,相信很多人在怎么把非springboot項目集成eureka問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”怎么把非springboot項目集成eureka”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

10余年的江陽網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。營銷型網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整江陽建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“江陽網(wǎng)站設(shè)計”,“江陽網(wǎng)站推廣”以來,每個客戶項目都認(rèn)真落實執(zhí)行。

1  背景

隨著SOA架構(gòu)的演進,越來越多的服務(wù)商需要提供一種通用的可以動態(tài)伸縮的基礎(chǔ)架構(gòu),

而對嘻「」來說,亦是如此。并且隨著TPS的不斷增加,more and more endpoint 需要整合這種分布式基礎(chǔ)架構(gòu)。這里有點類似當(dāng)年google的Bigtable 的論文剛發(fā)表時的案例,對不同業(yè)務(wù),或者相同業(yè)務(wù)不同功能,在或者相同功能實現(xiàn)節(jié)點拓展,分布式處理。(要實現(xiàn)分布式處理能力的系統(tǒng)必然伴隨這分布式場景的一些問題,這里不做討論。

2 目的說明

類似Dubbo分布式服務(wù)治理,不同的微服務(wù)需要依賴注冊中心做服務(wù)治理與管控,springCloud 也是這樣,作為微服務(wù)的生態(tài),不同的組件負責(zé)不同的功能(例如archaius 做配置and eureka 做服務(wù)PUBSUB等...)。

3 方案對比

3.1 directly to register

簡單的說.通過分析源碼發(fā)現(xiàn)DiscoveryClient對象是客戶端啟動加載的核心類,

怎么把非springboot項目集成eureka

它創(chuàng)建的時候就會去注冊,如下

怎么把非springboot項目集成eureka

在restemplate 調(diào)用的過程中需要先通過應(yīng)用層通信拿到服務(wù)器對應(yīng)spring.application.name 為vipaddress的InstanceInfo,instanceOf里面維護了對應(yīng)的你將要調(diào)用的服務(wù)器或者服務(wù)如下:

怎么把非springboot項目集成eureka

可能會在這里拿不出來實例信息,最后報沒有對應(yīng)服務(wù)實例,以上來自Applications Class,

源碼后文會詳細分析,這里不過多分析只解決問題

******  4.2  The Error for Register Process******

這里按照官網(wǎng)案例搭建注冊環(huán)境,可能會出現(xiàn)一切準(zhǔn)備就緒然注冊不上去的情況。

走一遍注冊流程如下:

怎么把非springboot項目集成eureka 怎么把非springboot項目集成eureka

怎么把非springboot項目集成eureka

Archaius會默認(rèn)加載classpath下的config.properties文件作為當(dāng)前內(nèi)存資源配置,也可以改,通過archaius.configurationSource.defaultFileName,當(dāng)然既然是動態(tài)的肯定也是可以做多數(shù)據(jù)源動態(tài)處理,具體不詳細說明了

具體配置意義先不考慮,先為了解決問題考慮環(huán)境

******    4.3  eureka/apps for configuration******

手動注冊這一截是沒有的 顯示empty

所以我們需要把這一截加上去,

代碼如下:

int port = instanceInfo.getPort();
Map<String, String> maps = Maps.newHashMap();
maps.put("management.port", String.valueOf(port));
//activity-manager:dev-10.0.2.17:8010

applicationInfoManager.getInstance().registerAppMetadata(maps);

還有一個細節(jié)問題:

Archaius1Utils.initConfig("eureka-client");

這個是在查看報錯日志的時候報的,為了更好的兼容框架需要解決,大概意思是說缺少這個配置 怎么把非springboot項目集成eureka

在加載此類實現(xiàn)類的時候就會一起初始化該類。很明顯組件已經(jīng)幫我們做了,我們只需要提供對應(yīng)配置文件即可 怎么把非springboot項目集成eureka

依賴為

怎么把非springboot項目集成eureka

怎么把非springboot項目集成eureka

這里需要注意的兩點:

怎么把非springboot項目集成eureka 怎么把非springboot項目集成eureka

怎么把非springboot項目集成eureka

繼續(xù)DEBUG會看到:

怎么把非springboot項目集成eureka

這里開始遞歸調(diào)用攔截器,也就是我們在啟動時候放進去的攔截器會在這里調(diào)用

怎么把非springboot項目集成eureka

當(dāng)然這里有個細節(jié)

怎么把非springboot項目集成eureka

這里我們需要關(guān)注兩個點

1 通過服務(wù)serviceId拿到核心instanceInfo ,下面會解釋

2 通過對應(yīng)服務(wù)信息選擇對應(yīng)服務(wù)調(diào)用

分別對應(yīng)第一二行代碼

繼續(xù)debug

怎么把非springboot項目集成eureka

這里需要通過一個serviceId加載一個LloadBalancer,代碼如下 怎么把非springboot項目集成eureka

Spring 默認(rèn)會調(diào)用以上工廠加載,所以我們點進去會看到 怎么把非springboot項目集成eureka

這里也需要注意兩點:

1 我們這個lloadbalancer是用的時候才去加載,換句話說懶加載

2 這里有個緩存的 操作 第一個if為false就會返回緩存,換句話說只會創(chuàng)建一次

然后我們進去

怎么把非springboot項目集成eureka

這些東西。

怎么把非springboot項目集成eureka

怎么把非springboot項目集成eureka

以上的clientConfig 就是我們在代碼設(shè)置進去的EurekaClientConfigBean

現(xiàn)在還沒有上面參數(shù),不要緊因為還沒有開始初始化。

繼續(xù)加載完之后開始加載

怎么把非springboot項目集成eureka

圖大概意思就是先加載父類baseLoadbalancer然后加載自己

restOfInit方法就是核心加載方法

怎么把非springboot項目集成eureka

上圖標(biāo)紅的是比較重要的方法

怎么把非springboot項目集成eureka

這里比較重點的如上標(biāo)紅處

進去看到:

怎么把非springboot項目集成eureka 怎么把非springboot項目集成eureka 怎么把非springboot項目集成eureka

他就會走到這里,這是什么呢?

怎么把非springboot項目集成eureka

對應(yīng)一下會從visualHostNameAppMap 里面通過vipAddress那到List<InstanceOf>,成功拿到instanceInfo之后回到剛開始進源碼的地方就會返回一個包含對應(yīng)instanceInfo的loadBalancer,

怎么把非springboot項目集成eureka 怎么把非springboot項目集成eureka

總結(jié)一下:

負載均衡實現(xiàn)原理概述為根據(jù)配置加載負載均衡攔截器,用戶客戶端調(diào)用遍歷處理,通過servceId通過HTTP拿到對應(yīng)instanceInfo(和dubbo流程差不多,第一次都需要去拿之后緩存在本地。默認(rèn)90秒把重新調(diào)用一次拉取信息)多個需要依算法選取一個然后進行遠程調(diào)用。

代碼如下:

package com.kili.lipapay.nmc.common;

import com.google.common.collect.Maps;
import com.netflix.appinfo.ApplicationInfoManager;
import com.netflix.appinfo.InstanceInfo;
import com.netflix.appinfo.providers.EurekaConfigBasedInstanceInfoProvider;
import com.netflix.config.ConfigurationManager;
import com.netflix.config.DynamicPropertyFactory;
import com.netflix.discovery.DefaultEurekaClientConfig;
import com.netflix.discovery.DiscoveryClient;
import com.netflix.discovery.DiscoveryManager;
import com.netflix.discovery.EurekaClient;
import org.springframework.stereotype.Component;
import javax.annotation.PostConstruct;
import java.io.*;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Date;
import java.util.Map;
import java.util.Properties;


@Component
class SimpleEurakeService {
    private static final DynamicPropertyFactory configInstance = com.netflix.config.DynamicPropertyFactory
            .getInstance();

    public void registerWithEureka() throws IOException {

        ApplicationInfoManager applicationInfoManager = null;
        EurakeInstanceConfig config = null;
        InstanceInfo instanceInfo = null;
        // Register with Eureka
        if (applicationInfoManager == null) {
            config = new EurakeInstanceConfig();
            instanceInfo = new EurekaConfigBasedInstanceInfoProvider(config).get();
            applicationInfoManager = new ApplicationInfoManager(config, instanceInfo);

        }
       // Archaius1Utils.initConfig("eureka-client");
        Properties properties = new Properties();
        InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
        properties.load(inputStream);
        properties.setProperty("eureka.ipAddr", InetAddress.getLocalHost().getHostAddress());
        String instanceId = applicationInfoManager.getInfo().getAppName() + ":dev-" + properties.getProperty("eureka.ipAddr") + ":" + properties.getProperty("eureka.port");
        properties.setProperty("eureka.instanceId", instanceId);
        ConfigurationManager.loadProperties(properties);
        int port = instanceInfo.getPort();
        Map<String, String> maps = Maps.newHashMap();
        maps.put("management.port", String.valueOf(port));
        //activity-manager:dev-10.0.2.17:8010
        applicationInfoManager.getInstance().registerAppMetadata(maps);
        applicationInfoManager.getInstance().setInstanceStatus(
                InstanceInfo.InstanceStatus.UP);
        EurekaClient eurekaClient = new DiscoveryClient(applicationInfoManager, new DefaultEurekaClientConfig());
        String vipAddress = configInstance.getStringProperty(
                "eureka.vipAddress", "unknown").get();
        InstanceInfo nextServerInfo = null;
        while (nextServerInfo == null) {

            try {
                nextServerInfo = eurekaClient
                        .getNextServerFromEureka(vipAddress, false);
            } catch (Throwable e) {
                System.out
                        .println("Waiting for service to register with eureka..");
                try {
                    Thread.sleep(10000);
                } catch (InterruptedException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
        }
    }


    public void unRegisterWithEureka() {
        // Un register from eureka.
        DiscoveryManager.getInstance().shutdownComponent();
    }


    private void processRequest(final Socket s) {
        try {
            BufferedReader rd = new BufferedReader(new InputStreamReader(
                    s.getInputStream()));
            String line = rd.readLine();
            if (line != null) {
                System.out.println("Received the request from the client.");
            }
            PrintStream out = new PrintStream(s.getOutputStream());
            System.out.println("Sending the response to the client...");
            out.println("Reponse at " + new Date());
        } catch (Throwable e) {
            System.err.println("Error processing requests");
        } finally {
            if (s != null) {
                try {
                    s.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }

    @PostConstruct
    private void init() throws IOException {
        SimpleEurakeService sampleEurekaService = new SimpleEurakeService();
        sampleEurekaService.registerWithEureka();
    }

配置如下:

# note that for a purely client usage (e.g. only used to get information about other services,
# there is no need for registration. This property applies to the singleton DiscoveryClient so
# if you run a server that is both a service provider and also a service consumer,
# then don't set this property to false.
#eureka.shouldEnforceRegistrationAtInit=false
## configuration related to reaching the eureka serversSS
eureka.client.service-url.defaultZone=http://localhost:7025/eureka
eureka.serviceUrl.default=http://localhost:7025/eureka
spring.cloud.config.discovery.enabled=true
spring.cloud.config.discovery.service-id=config-server
eureka.region=default
spring.application.name=sampleservice

#Name of the application to be identified by other services

eureka.name=sampleservice


#Virtual host name by which the clients identifies this service
eureka.vipAddress=sampleservice

#The port where the service will be running and serving requests
eureka.port=8080

#For eureka clients running in eureka server, it needs to connect to servers in other zones
eureka.preferSameZone=false

#Change this if you want to use a DNS based lookup for determining other eureka servers. For example
#of specifying the DNS entries, check the eureka-client-test.properties, eureka-client-prod.properties
eureka.shouldUseDns=false

eureka.us-east-1.availabilityZones=default
erueka.registration.enabled=true

到此,關(guān)于“怎么把非springboot項目集成eureka”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>

分享名稱:怎么把非springboot項目集成eureka
分享網(wǎng)址:http://aaarwkj.com/article14/pespde.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈網(wǎng)站制作、動態(tài)網(wǎng)站、商城網(wǎng)站、搜索引擎優(yōu)化軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都做網(wǎng)站
精品视频一区二区三区在线观看| 亚洲中文有码在线播放| 黄色大片黄色大片黄色大片| 成人av免费高清在线播放| 欧美三级黄片免费视频| 久久精品国产一区二区三| 亚洲日本欧洲二区精品| 熟女精品国产一区二区三区| 中文字幕成人免费看片| 白浆视频在线免费观看| 日韩少妇一级淫片免费| 欧美高清一区二区在线播放| 涩五月婷婷开心中文字幕| 久久精品色妇熟妇丰满人妻| 亚洲精品紧身裙女教师av| av电影在线中文字幕| 免费国产黄片在线播放| 亚洲国产日韩精品欧美| 日韩高清午夜片在线观看| 日本一级特黄大片做受在线观看| 秋霞三级在线免费观看| 成人性生交大片免费看中文 | 韩国av毛片在线播放| 有码不卡中文字幕在线视频| 亚洲av久久一区二区| 国产成人色污在线观看| 成熟女人毛茸茸的视频| 91麻豆精品国产久久久| 欧美性色黄大片人与善| 亚洲国产成人综合一区二区三区| 熟女另类视频在线观看| 久久成人影院免费观看| 麻豆人妻性色av专区| 国产欧美日韩另类视频| 午夜体内射精免费视频| 国产情侣自拍视频在线观看| 中文字幕精品一区二区三区视频| 神马视频一区二区在线观看| 精品国产一区二区三区大| 国产精品久久123区| 亚洲成在人天堂一区二区|