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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【过程记录】springcloud配置使用Eureka作服务发现组件并进行微服务注册

發布時間:2024/9/30 编程问答 53 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【过程记录】springcloud配置使用Eureka作服务发现组件并进行微服务注册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • Eureka介紹
  • 工具準備
  • 步驟
    • 編寫eureka server
    • 編寫微服務應用:
    • 查詢指定微服務在Eureka上的實例列表
  • Eureka的自我保護模式


Eureka介紹

Eureka是Netflix開源的服務發現組件,本身是一個基于REST的服務。它包含Server和Client兩部分。Spring Cloud將它集成在子項目Spring Cloud Netflix中,從而實現微服務的注冊與發現。

Eureka包含兩個組件:Eureka Server和EurekaClient,它們的作用如下:
●Eureka Server提供服務發現的能力,各個微服務啟動時,會向Eureka Server注冊自己的信息(例如IP、端口、微服務名稱等),Eureka Server會存儲這些信息。
●EurekaClient是一個Java客戶端,用于簡化與Eureka Server的交互。
●微服務啟動后,會周期性(默認30s)地向Eureka Server發送心跳以續約自己的“租期”。

●如果Eureka Server在一定時間內沒有接收到某個微服務實例的心跳,Eureka Server將注銷該實例(默認90s)。
●默認情況下,Eureka Server同時也是EurekaClient。多個Eureka Server實例互相之間通過復制的方式來實現服務注冊表中數據的同步。
●EurekaClient會緩存服務注冊表中的信息。這種方式有一定的優勢——首先,微服務無須每次請求都查詢Eureka Server,從而降低了Eureka Server的壓力;其次,即使Eureka Server所有節點都宕掉,服務消費者依然可以使用緩存中的信息找到服務提供者并完成調用。 綜上,Eureka通過心跳檢查、客戶端緩存等機制,提高了系統的靈活性、可伸縮性和可用性。

工具準備

IDEA、mysql、新建springboot項目、其他相關jar包


在maven官網都可以搜到。

步驟

編寫eureka server

1.新建兩個springboot工程文件(maven)
一個是eureka server

pom.xml

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>

yml:

server:port: 8761 eureka:client:register-with-eureka: falsefetch-registry: falseserviceUrl.defaultZone: http://localhost:8761/eureka/

●eureka.client.registerWithEureka:表示是否將自己注冊到EurekaServer,默認為true。由于當前應用就是Eureka Server,故而設為false。
●eureka.client.fetchRegistry:表示是否從Eureka Server獲取注冊信息,默認為true。因為這是一個單點的Eureka Server,不需要同步其他的Eureka Server節點的數據,故而設為false。
●eureka.client.serviceUrl.defaultZone:設置與EurekaServer交互的地址,查詢服務和注冊服務都需要依賴這個地址。默認是http://localhost:8761/eureka;多個地址間可使用,分隔。

運行啟動類:

@SpringBootApplication @EnableEurekaServer public class EurekaServiceApplication {public static void main(String[] args) {SpringApplication.run(EurekaServiceApplication.class, args);}}

注意
●在Spring Cloud Edgware之前,要想將微服務注冊到Eureka Server或其他服務發現組件上,必須在啟動類上添加@EnableEurekaClient或@EnableDiscoveryClient。
●在SpringCloud Edgware以及更高版本中,只需添加相關依賴,即可自動注冊。這是由于在實際項目中,我們可能希望實現“不同環境不同配置”的效果,例如:在開發環境中,不注冊到EurekaServer上,而是服務提供者、服務消費者直連,便于調測;在生產環境中,我們又希望能夠享受服務發現的優勢——服務消費者無須知道服務提供者的絕對地址。為適應該需求,Spring Cloud Commons進行了改進,相關Issue:https://github.com/springcloud/spring-cloud-commons/issues/218.
啟動成功:

編寫微服務應用:

依賴:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><!-- https://mvnrepository.com/artifact/com.h2database/h2 --><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>1.4.200</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.2</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional></dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><scope>runtime</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies>

yml注冊到eureka的配置

spring:application:name: clouddemo server:port: 8000 eureka:client:service-url:defaultZone: http://localhost:8761/eureka/instance:prefer-ip-address: true# 表示將自己的IP注冊到eureka server,若不配置該屬性或設置為false則表示注冊微服務所在操作系統的hostname到eureka server

數據庫配置:

spring.datasource.url=jdbc:mysql://localhost:3308/waimai?useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=GMT%2B8 spring.datasource.username=waimai spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true mybatis.type-aliases-package=com.example.springcloud.clouddemo.Entity

其中mybatis.type-aliases-package=com.example.springcloud.clouddemo.Entity
用于mybatis映射,由于用的是注解的方式所以只寫這一句就好。
新建的數據表:

編寫實體類、dao、controller層:
entity

@Data @Entity public class User {@Id@GeneratedValue(strategy = GenerationType.AUTO)private Long Id;@Columnprivate String username;@Columnprivate String name;@Columnprivate Integer age;@Columnprivate BigDecimal balance;}

dao:
這里用的是注解的方式

@Mapper public interface UserDao { @Select("select Id,username,name,age,balance from userr")List<User>SelectUser();@Select("select Id,username,name,age,balance from userr where Id = #{Id}")User SelectoneUser(int Id); }

controller:

@RestController public class UserController {@Autowiredprivate UserDao userDao;@GetMapping("/{Id}")public User findById(@PathVariable int Id) {System.out.println("fds");User findOne = userDao.SelectoneUser(Id);return findOne;} }

啟動微服務后瀏覽器輸入

可以看見返回了正確的一條數據,可見微服務啟動成功。
然后刷新剛剛的eureka頁面:

可以看到已經成功注冊。

查詢指定微服務在Eureka上的實例列表

修改上面微服務應用的controller:添加以下語句

import org.springframework.cloud.client.discovery.DiscoveryClient;@RestController public class UserController {@Autowiredprivate UserDao userDao;@GetMapping("/{Id}")public User findById(@PathVariable int Id) {System.out.println("fds");User findOne = userDao.SelectoneUser(Id);return findOne;}@Autowiredprivate DiscoveryClient discoveryClient;@GetMapping("/user")public List<ServiceInstance> showInfo(){return this.discoveryClient.getInstances("clouddemo");} }

discoveryClient.getInstances可以用于查詢指定微服務在eureka上的實例列表
打開瀏覽器:

Eureka的自我保護模式

進入自我保護模式最直觀的體現,是EurekaServer首頁輸出的警告,如圖

Eureka Server自我保護模式界面 默認情況下,如果EurekaServer在一定時間內沒有接收到某個微服務實例的心跳,Eureka Server將注銷該實例(默認為90s)。但是當網絡分區故障發生時,微服務與EurekaServer之間無法正常通信,以上行為可能變得非常危險了——因為微服務本身其實是健康的,此時本不應該注銷這個微服務。 Eureka通過“自我保護模式”來解決這個問題——當Eureka Server節點在短時間內丟失過多客戶端時(可能發生了網絡分區故障),那么這個節點就會進入自我保護模式。一旦進入該模式,Eureka Server就會保護服務注冊表中的信息,不再刪除服務注冊表中的數據(也就是不會注銷任何微服務)。當網絡故障恢復后,該Eureka Server節點會自動退出自我保護模式。

在Spring Cloud中,可以使用eureka.server.enable-self-preservation=false禁用自我保護模式。
●Eureka與ZooKeeper做服務發現的對比:http://dockone.io/article/78.

在Status一欄有個UP,表示應用程序狀態正常。應用狀態還有其他取值,例如DOWN、OUT_OF_SERVICE、UNKNOWN等。只有標記為“UP”的微服務會被請求。 前文講過,EurekaServer與EurekaClient之間使用心跳機制來確定EurekaClient的狀態,默認情況下,服務器端與客戶端的心跳保持正常,應用程序就會始終保持“UP”狀態。

總結

以上是生活随笔為你收集整理的【过程记录】springcloud配置使用Eureka作服务发现组件并进行微服务注册的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 国产又粗又猛 | 日韩av一区二区在线播放 | 免费的黄色网址 | 亚洲欧美日韩电影 | 亚州欧美 | 国产精品久久久久久久久久久不卡 | 日日爽 | 韩国三级hd中文字幕有哪些 | 大胸喷奶水www视频妖精网站 | 国产超碰 | 懂色aⅴ一区二区三区免费 国产精品99在线观看 | 黄色日批 | 天天综合网久久综合网 | 两个人做羞羞的视频 | 国产黄色一区 | 光棍福利视频 | 豆花视频在线播放 | 亚洲自拍中文字幕 | 深爱五月激情网 | 天堂av√| 蜜臀av夜夜澡人人爽人人 | 欧美性猛交久久久乱大交小说 | 99riav国产在线观看 | 夜夜嗨av色一区二区不卡 | 男女爽爽 | 舔花蒂| 日p免费视频 | 久久精品久久精品久久精品 | 大肉大捧一进一出好爽视频动漫 | 日本不卡一二 | av在线播放网站 | 亚洲午夜精品一区二区 | 国产精品色网 | 精品一区二区三区免费看 | 三级黄色网络 | 天堂综合在线 | 西西4444www大胆无码 | 在线免费观看毛片 | www.在线观看麻豆 | 国产色中色 | 久久中文字幕人妻 | 999一区二区三区 | 日韩一二三四五区 | 成人刺激视频 | 99久久成人| 涩涩视频在线免费看 | 桃色视屏| 男女无遮挡猛进猛出 | 一本久道视频一本久道 | 无码人妻精品一区二区三应用大全 | 夜夜骑夜夜操 | 中文字幕影片免费在线观看 | 色呦呦国产精品 | 国产中文网 | 亚洲欧美日韩久久精品 | 一级女性全黄久久生活片免费 | 日p视频在线观看 | 精品国产一区二区不卡 | 4hu最新网址 | 久久亚洲精品中文字幕 | jizz中国女人 | 影视先锋av资源 | 欧美三级又粗又硬 | 男生和女生操操 | 一级全黄少妇性色生活片 | 欧洲美熟女乱又伦 | 成人片在线播放 | 四虎免费在线观看 | 亚洲欧美在线观看视频 | 亚洲天堂日本 | 伦理片一区二区三区 | 亚洲欧美日韩成人在线 | 我和我的太阳泰剧在线观看泰剧 | 欧美大片免费播放器 | 日本高清中文字幕 | 欧美亚洲欧美 | 美女主播在线观看 | 国产无遮挡又黄又爽又色视频 | 美日韩精品一区二区 | 免费国偷自产拍精品视频 | 国产又黄又爽视频 | 色噜噜狠狠狠综合曰曰曰 | 91精品国产99 | 色骚综合| 高潮毛片7777777毛片 | 久久老司机 | 国产美女自拍视频 | 中国爆后菊女人的视频 | 欧美成人免费观看视频 | 欧美精品第一区 | 日本久色| 日日干天天干 | 国产三级精品三级在线 | 性开放网站 | 久久网免费视频 | 免费观看美女裸体网站 | 最近最经典中文mv字幕 | 日韩精品在线观看视频 | 人妻丰满熟妇av无码区免 |