一、建立一個項目作為注冊中心:
1.File->new->project->Spring Initializr->SDK選1.8->Next->java版本選8,定義好名稱->Next->左邊一列選擇Spring Cloud Discovery,右邊一列選擇Eureka Server,完成項目建立
2.然後啟動入口DemoApplication.java類上面加一個@EnableEurekaServer代表它是服務中心,之後的服務都會注冊到它這裡
3.在application.properties裡加入
server.port=8761
eureka.instance.hostname=localhost
eureka.client.register-with-eureka=false #禁止自己當做服務注冊
eureka.client.fetch-registry=false #屏蔽注冊資訊
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
代表注冊中心端口号是8761
4.啟動這個項目
5.這時打開localhost:8761就能看到服務中心了,但此時還沒有服務注冊到這裡。
二、建立一個Module作為服務生産者(提供接口的項目):
1.File->new->project->Spring Initializr->SDK選1.8->Next->java版本選8,定義好名稱->Next->左邊一列選擇Spring Cloud Discovery,右邊一列選擇Eureka Server,完成項目建立
2.然後啟動入口DemoApplication.java類上面加一個@EnableEurekaClient代表它是服務生産者,它提供接口給之後的服務使用
3.在application.properties裡加入
spring.application.name=client1
server.port=8762
#指向注冊中心,http://${eureka.instance.hostname}:${server.port}/eureka/
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
代表服務生産者端口号是8762,名字是client1,并指向注冊中心
4.建立一個Controller接口作為提供:
@RestController
public class HelloController {
@RequestMapping("/hello2")
public String home2(@RequestParam String name) {
return "hello2 "+name+",client1 am from port:" +port;
}
}
5.啟動這個項目,此時注冊中心會出現服務生産者的名稱
三、建立一個Module作為服務消費者(使用生産者接口的項目):
1.File->new->project->Spring Initializr->SDK選1.8->Next->java版本選8,定義好名稱->Next->左邊一列選擇Spring Cloud Discovery,右邊一列選擇Eureka Server,完成項目建立
2.然後啟動入口DemoApplication.java類上面加一個@EnableDiscoveryClient代表它是服務消費者,它使用生産者提供的接口,然後裡面寫這個
@Bean
public RestTemplate restTemplate() {
return new RestTemplate();
}
3.在application.properties裡加入
spring.application.name=clientxiaofei
server.port=8763
#指向注冊中心,http://${eureka.instance.hostname}:${server.port}/eureka/
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
代表服務消費者端口号是8763,名字是clientxiaofei,并指向注冊中心
4.建立一個使用服務生産者接口的Controller:
@RestController
public class Hellocilent1Controller {
@Autowired
private RestTemplate restTemplate;
@RequestMapping(value = "/hello")
public String hello(@RequestParam String name){
String s = restTemplate.getForObject("http://localhost:8762/hello?name=" + name, String.class);
return s;
}
}
restTemplate.getForObject裡面的url就是服務生産者的接口位址,就能拿到這個接口傳回的Object,我這裡是字元串
5.啟動這個項目,此時注冊中心會出現服務消費者的名稱
6.此時在浏覽器輸入localhost:8763打開消費者,就能看到消費者調用生産者的接口傳回的hello字元串
python flask架構 eureka
安裝庫
pip install py_eureka_client
使用
from flask import Flask
import py_eureka_client.eureka_client as eureka_client
app = Flask(__name__)
def setEureka():
server_host = "localhost" #服務提供者的位址
server_port = 5000 #服務提供者的端口号
eureka_client.init(eureka_server="http://localhost:1111/eureka", #注冊中心的位址
app_name="flask_server",
# 目前元件的主機名,可選參數,如果不填寫會自動計算一個,如果服務和 eureka 伺服器部署在同一台機器,請必須填寫,否則會計算出 127.0.0.1
instance_host=server_host,
instance_port=server_port,
# 調用其他服務時的高可用政策,可選,預設為随機
ha_strategy=eureka_client.HA_STRATEGY_RANDOM)
setEureka()
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run(debug=True, threaded=True, port=5000, host="0.0.0.0")