摘要:環境搭建注冊中心依賴如下所示配置應用啟動端口注冊中心管理中的應用名稱登陸注冊管理中的的賬號密碼是否把自己注冊到注冊中心是否從上來獲取服務的注冊信息啟動注冊中心啟動后訪問登陸界面輸入設置的賬號密碼進
環境
Java version 1.8
SpringBoot version 2.1.7
搭建注冊中心 Eureka-server
pom.xml 依賴如下所示:
org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.boot spring-boot-starter-test test org.springframework.boot spring-boot-starter-security org.springframework.boot spring-boot-starter-security javax.xml.bind jaxb-api com.sun.xml.bind jaxb-impl 2.3.0 org.glassfish.jaxb jaxb-runtime 2.3.0 javax.activation activation 1.1.1
配置 Eureka application.properties
# 應用啟動端口 server.port=8090 # 注冊中心管理中的 應用名稱 spring.application.name=eureka-server # 登陸注冊管理中的的賬號密碼 spring.security.user.roles=SUPERUSER spring.security.user.name=eureka spring.security.user.password=123456 # 是否把自己注冊到注冊中心 eureka.client.register-with-eureka=true # 是否從eureka上來獲取服務的注冊信息 eureka.client.fetch-registry=false eureka.instance.hostname=localhost eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka
啟動注冊中心 啟動后訪問(http://127.0.0.1:8090)
登陸界面
2. 輸入設置的賬號密碼(user:eureka pwd:123456) 3. 進入注冊中心頁面
需要注意的是 需要處理下CSRF不然服務提供者注冊不進來 啟動入口文件如下
EurekaServiceApplication.java
@EnableEurekaServer @SpringBootApplication public class EurekaServiceApplication { public static void main(String[] args) { SpringApplication.run(EurekaServiceApplication.class, args); } /** * 忽略 uri /eureka/** 的CSRF檢測 */ @EnableWebSecurity static class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http.csrf().ignoringAntMatchers("/eureka/**"); super.configure(http); } } }
簡單的注冊中心已經搭建完成
搭建服務提供者 Provider-service
首先還是配置文件 application.properties
服務端口 server.port=8081 # 服務應用名稱 spring.application.name=provider-ticket # 是否允許使用ip連接 eureka.instance.ip-address=true # 注意 http://用戶名:密碼@主機:端口/eureka 需要與服務中心里配置的一樣 eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka
啟動 項目后會自動把服務注冊到配置的服務中心
以下是我做的測試代碼
TicketController.java
package com.yourdream.providerticket.controller; import com.yourdream.providerticket.service.TicketService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TicketController { @Autowired TicketService ticketService; @GetMapping("/ticket") public String getTicket(){ System.out.println("server-8081"); return ticketService.getTicket(); } }
TicketService
package com.yourdream.providerticket.service; import org.springframework.stereotype.Service; @Service public class TicketService { public String getTicket() { return "《哪吒之魔童降世》"; } }
ProviderTicketApplication
package com.yourdream.providerticket; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication public class ProviderTicketApplication { public static void main(String[] args) { SpringApplication.run(ProviderTicketApplication.class, args); } }
到此一個簡單的服務提供者搭建完成
搭建服務消費者 Consumer-user
首先還是配置文件 application.properties
server.port=8100 spring.application.name=consumer-user eureka.client.serviceUrl.defaultZone=http://eureka:123456@localhost:8090/eureka eureka.instance.ip-address=true
首先需要明確 消費者與服務提供者之間通訊協議是HTTP
看下實例代碼
啟動入口 ConsumerUserApplication.java
package com.yourdream.consumeruser; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; import org.springframework.cloud.client.loadbalancer.LoadBalanced; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @EnableDiscoveryClient //開啟發現服務功能 @SpringBootApplication public class ConsumerUserApplication { public static void main(String[] args) { SpringApplication.run(ConsumerUserApplication.class, args); } @LoadBalanced //開啟負載均衡器 @Bean //注冊 RestTemplate 服務 public RestTemplate restTemplate() { return new RestTemplate(); } }
UserController.java
package com.yourdream.consumeruser.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.client.RestTemplate; @RestController public class UserController { // 幫助我們向 注冊的實例服務 發起http請求 @Autowired RestTemplate restTemplate; @GetMapping("/buy") public String buyTicket(String name) { //PROVIDER-TICKET 服務提供者名稱 String forObject = restTemplate.getForObject("http://PROVIDER-TICKET/ticket", String.class); return name + "購買了" + forObject; } }
啟動服務 訪問http://127.0.0.1:8100/buy
到此一個簡單的服務消費者搭建完成
原文
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/76261.html
摘要:同時除了對號碼自身的要求,業務還對號生成系統的可用性要求極高,想象一下,如果生成系統癱瘓,整個美團點評支付優惠券發券騎手派單等關鍵動作都無法執行,這就會帶來一場災難。 分布式id主要用到哪些地方 在復雜分布式系統中,往往需要對大量的數據和消息進行唯一標識。如在美團點評的金融、支付、餐飲、酒店、貓眼電影等產品的系統中,數據日漸增長,對數據分庫分表后需要有一個唯一ID來標識一條數據或消息,...
摘要:利用分布式數據庫實現了物理分離,邏輯統一的優勢。這樣的基本特點讓分布式數據庫具有數據獨立性和位置透明性,局部應用響應速度升級。在互聯網大潮的背景下,中國的分布式數據庫出現,這也填補了國內數據庫的空白。 原文地址:http://digi.163.com/17/1114/0... 分布式數據庫在今年突然成為熱點技術。這背后究竟有哪些環境變化導致了這種技術演進,分布式數據庫的優勢在哪兒?這種...
閱讀 2031·2023-04-26 00:16
閱讀 3483·2021-11-15 11:38
閱讀 3176·2019-08-30 12:50
閱讀 3184·2019-08-29 13:59
閱讀 757·2019-08-29 13:54
閱讀 2506·2019-08-29 13:42
閱讀 3312·2019-08-26 11:45
閱讀 2193·2019-08-26 11:36