一、新建一个项目作为注册中心:
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")