SpringCloud学习<一>
微服务模块
- 建module
- 改pom
- 写yml
- 主启动
- 业务类
支付模块 payment
建module
在父工程下构建了cloud-provider-payment8001模块
<modules> <module>cloud-provider-payment8001</module> </modules>
端口内调用
原理解释
使用Resttemplate可以方便的在后端调用端口
代码实例
首先:我们要在springboot中注册好RestTemplate,就是在config类中添加带bean的语句
@Configuration public class OrderConfig { @Bean public RestTemplate getRestTemplate() { return new RestTemplate();}}
其次: 即可在controller层中调用resttemplate的方法
@GetMapping(value = "/comsumer/create") public Result creat(Payment payment) { Result result = restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, Result.class); return result;}
这里的三个参数,分别是URL、实体类、返回值得类,URL就是你想调的哪个端口,就是怎么写那个地址串! 如果那边是post方法就写postForObject,如果是get方法就写getForObject
@GetMapping(value = "/comsumer/get/{id}") public Result findById(@PathVariable("id") Long id) { Result result = restTemplate.getForObject(PAYMENT_URL + "/payment/get/"+id, Result.class); return result; }
这里只有两个参数,URL、返回值类,由于URL调的方法是通过地址串传参的,所以把URL拆成了访问地址 + id,其中id也是通过同样方式拿到。
Eureka
Eureka也是用作后端端口间调用的!但为什么不直接调呢?因为后端端口服务一旦多了起来,那么再调端口那是相当的麻烦的。所以出现了Eureka
Eureka基础知识
什么是服务治理
什么是服务注册
简单的说:就是把一堆微服务到这个服务中心先做一个注册!然后以后再慢慢调
Eureka两组件
- 服务注册EurekaServer:就是物业公司
- 访问EurekaClient:就是客户
Eureka中注册服务
构建Eureka注册中心
- 建Moudle
- 改pom---配置Eureka组件
这里映入的是server
<!--eureka-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
- 写YML
server: port: 7001 eureka: instance: hostname: localhost client: # 表示不用向自己注册自己 register-with-eureka: false fetch-registry: false service-url: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
这个东西看懂是不难的,要知道Eureka本身也需要一个端口
- 写主启动类
@SpringBootApplication @EnableEurekaServer 他就是Eureka的注解 public class EurekaMain7001 { public static void main(String[] args) { SpringApplication.run(EurekaMain7001.class, args); }}
依然是注解驱动,加上了@EnableEurekaServer注解,就可知道其是Eureka的启动类
将其他微服务注册入Eureka中心
- 加pom
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId> </dependency>
- 改yml
eureka: client: register-with-eureka: true fetch-registry: true service-url: defaultZone: http://localhost:7001/eureka
client即代表配置的是客户,两个register都要注册,同时填上默认地址
Consul服务注册与发现
Consul简介
是什么
Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。
能干嘛
安装并运行Consul
直接就是一个可运行文件,在 pracriceproject文件夹中
consul agent -dev 命令启动
通过以下地址可以访问Consul的首页: http://localhost:8500
pom文件依赖
<!--SpringCloud consul-server--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-consul-discovery</artifactId> </dependency>
这个POM配置是必不可少的
服务提供者
yml怎么配
server: #consul服务端口 port: 8006 spring: application: name: cloud-provider-payment cloud: consul: host: localhost port: 8500 discovery: hostname: 127.0.0.1 service-name: ${spring.application.name}
这样即可注册服务提供者
怎么才知道自己配好了
服务消费者
yml怎么配
server: port: 80 spring: application: name: cloud-consumer-order cloud: consul: # consul注册中心地址 host: localhost port: 8500 discovery: hostname: 127.0.0.1 service-name: ${spring.application.name}
和服务提供端的配置差不太多
三个注册中心异同点
- A :可用性
- C :一致性
- P :分区容错性
以上三者不会尽占完全
NOTE
dependencyManagement
这个标签实际只做规定不做引入