SpringCloud学习<一>

微服务模块

  1. 建module
  2. 改pom
  3. 写yml
  4. 主启动
  5. 业务类

支付模块 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注册中心

  1. 建Moudle
  2. 改pom---配置Eureka组件

这里映入的是server

 <!--eureka-server-->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 写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本身也需要一个端口

  1. 写主启动类
@SpringBootApplication
@EnableEurekaServer  他就是Eureka的注解
public class EurekaMain7001 {
    public static void main(String[] args) {
        SpringApplication.run(EurekaMain7001.class, args); }}

依然是注解驱动,加上了@EnableEurekaServer注解,就可知道其是Eureka的启动类

将其他微服务注册入Eureka中心

  1. 加pom
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
  1. 改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这个标签实际只做规定不做引入

全部评论

相关推荐

团子 行业运营 n*15.5
点赞 评论 收藏
转发
点赞 评论 收藏
转发
1 收藏 评论
分享
牛客网
牛客企业服务