SpringCloud之注册中心Demo(服务注册治理SpringCloud Eureka) from 饭团霸霸叫杨少君

  1. 什么是服务治理
    在传统rpc远程调用中,服务与服务依赖关系,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。

  2. 服务注册与发现
    在服务注册与发现中,有一个注册中心,当服务器启动的时候,会把当前自己服务器的信息 比如 服务地址通讯地址等以别名方式注册到注册中心上。
    另一方(消费者|服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,让后在实现本地rpc调用远程。


    rpc核心.png

    服务注册与发现原理.png

    负载均衡.png

    注册中心原理.png
  3. 注册中心环境搭建
    3.1 注册中心环境搭建
    3.1.1 Maven依赖信息 pom.xml
    <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.1.RELEASE</version>
    </parent>

    <dependencyManagement>
    <dependencies>
    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-dependencies</artifactId>
    <version>Finchley.M7</version>
    <type>pom</type>
    <scope>import</scope>
    </dependency>
    </dependencies>
    </dependencyManagement>
    <dependencies>

    <dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>
    </dependencies>

    <repositories>
    <repository>
    <id>spring-milestones</id>
    <name>Spring Milestones</name>
    <url>https://repo.spring.io/libs-milestone</url>
    <snapshots>
    <enabled>false</enabled>
    </snapshots>
    </repository>
    </repositories>
    3.1.2 application.yml
    ###服务端口号
    server:
    port: 8100
    ###eureka 基本信息配置
    eureka:
    instance:
    ###注册到eurekaip地址
    hostname: 127.0.0.1
    client:
    serviceUrl:
    defaultZone: http://{eureka.instance.hostname}:{server.port}/eureka/
    ###因为自己是为注册中心,不需要自己注册自己
    register-with-eureka: false
    ###因为自己是为注册中心,不需要检索服务
    fetch-registry: false
    3.1.3 启动Eureka服务
    @EnableEurekaServer
    @SpringBootApplication
    public class AppEureka {
    public static void main(String[] args) {
    SpringApplication.run(AppEureka.class, args);
    }
    }
    3.2 注册服务提供者
    项目案例:实现会员服务(提供者)springcloud-2.0-member调用订单服务(消费者)springcloud-2.0-order
    3.2.1 服务提供者 会员服务
    application.yml

    服务启动端口号

server:
port: 8000

服务名称(服务注册到eureka名称)

spring:
application:
name: yangshaojun-member-app

服务注册到eureka地址

eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka

因为该应用为注册中心,不会注册自己

register-with-eureka: true

是否需要从eureka上获取注册信息

fetch-registry: true

@RestController
public class MemberController {
@RequestMapping("/getMember")
public String getMember() {
return "this is getMember";
}
}

@SpringBootApplication
@EnableEurekaClient
public class AppMember {
public static void main(String[] args) {
SpringApplication.run(AppMember.class, args);
}
}
3.2.2 服务消费者订单服务

服务启动端口号

server:
port: 8001

服务名称(服务注册到eureka名称)

spring:
application:
name: yangshaojun-order-app

服务注册到eureka地址

eureka:
client:
service-url:
defaultZone: http://localhost:8100/eureka

因为该应用为注册中心,不会注册自己

register-with-eureka: true

是否需要从eureka上获取注册信息

fetch-registry: true

@RestController
public class OrderController {
@Autowired
private RestTemplate restTemplate;

@RequestMapping("/getorder")
public String getOrder() {
    // order 使用rpc 远程调用技术 调用 会员服务
    String memberUrl = "http://yangshaojun-member-app/getMember";
    String result = restTemplate.getForObject(memberUrl, String.class);
    System.out.println("会员服务调用订单服务,result:" + result);
    return result;
}

}

@SpringBootApplication
@EnableEurekaClient
public class AppOrder {

public static void main(String[] args) {
    SpringApplication.run(AppOrder.class, args);
}

@Bean
@LoadBalanced
RestTemplate restTemplate() {
    return new RestTemplate();
}

}

服务注册信息.png
  1. 注册中心集群搭建
    4.1 Eureka注册中心2个应用,在配置中互相注册自己。
    4.2 服务提供者和消费者分别将自己注册到2个注册中心。
WeChat Image_20190801004110.png

WeChat Image_20190801004303.png

WeChat Image_20190801004255.png

WeChat Image_20190801004308.png

WeChat Image_20190801004628.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容