博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot分布式 - SpringCloud
阅读量:5965 次
发布时间:2019-06-19

本文共 3746 字,大约阅读时间需要 12 分钟。

一:介绍

  • Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
  • 微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
  • Spring Cloud 中文文档
  • Spring Cloud 官方文档
  • SpringCloud 教程PDF下载:

二:入门

  • 在IDEA新建空白工程

1. 注册中心

  • 在工程下新建模块eureka-server

1)导包

org.springframework.cloud
spring-cloud-starter-eureka-server

2 )application.yml配置Eureka信息

server:  port: 8761eureka:  instance:    hostname: eureka-server #eureka实例的主机名  client:    register-with-eureka: false #不把自己注册到eureka    fetch-registry: false #不从eureka上获取服务的注册信息    service-url:      defaultZone: http://localhost:8761/eureka/

3)开启@EnableEurekaServer注解

package cn.zyzpp.eurekaserver;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;/** * 开启@EnableEurekaServer注解 */@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication {
public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); }}

4)开启注册中心

  • 启动该应用,访问 进入Spring Eureka页面即成功。

2.服务提供者

  • 新建模块:provider-ticket

1)导入依赖

org.springframework.cloud
spring-cloud-starter-eureka-server

2)application.yml配置Eureka信息

server:  port: 8001 #8002spring:  application:    name: provider-ticketeureka:  instance:    prefer-ip-address: true #注册服务的时候使用服务的Ip地址  client:    service-url:      defaultZone: http://localhost:8761/eureka/

3)Service层方法

package cn.zyzpp.providerticket.service;import org.springframework.stereotype.Service;/** * Create by yster@foxmail.com 2018/6/4/004 18:37 */@Servicepublic class TicketService {
public String getTicket(){ return "《厉害了,我的国》"; }}

4)暴露HTTP接口

/** * Create by yster@foxmail.com 2018/6/4/004 18:39 */@RestControllerpublic class TicketControllert {
//轻量级HTTP @Autowired private TicketService ticketService; @GetMapping("/ticket") public String getTicket(){ System.out.println("8001"); //8002 return ticketService.getTicket(); }}

5)然后更改端口,分别打包该模块为jar包。运行。

3.服务消费者

  • 新建模块consumer-user

1)application.yml配置Eureka信息

server:  port: 8200spring:  application:    name: consumer-usereureka:  instance:    prefer-ip-address: true #注册服务的时候使用服务的Ip地址  client:    service-url:      defaultZone: http://localhost:8761/eureka/

2)开启发现服务的功能,使用负载均衡机制(默认轮询)

import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.web.client.RestTemplate;@EnableDiscoveryClient /*开启发现服务功能*/@SpringBootApplicationpublic class ConsumerUserApplication {    public static void main(String[] args) {        SpringApplication.run(ConsumerUserApplication.class, args);    }    @LoadBalanced /*开启负载均衡机制*/    @Bean    public RestTemplate getRestTemplate(){        return new RestTemplate();    }}

3)获取服务

/** * Create by yster@foxmail.com 2018/6/4/004 19:13 */@RestControllerpublic class UserController {
@Autowired private RestTemplate restTemplate; @GetMapping("/buy") public String getTicket(){ String s = restTemplate.getForObject("http://PROVIDER-TICKET/ticket",String.class); return "购买了 "+s; }}
  • 启动服务消费者模块。查看服务提供者的控制台打印。
  • 会发现第一次请求8001,第二次8002,8001,8002,,这是因为使用了负载均衡。

本文只讲解了服务的注册与发现,Spring cloud的更多内容推荐阅读:

转载于:https://www.cnblogs.com/yueshutong/p/9381545.html

你可能感兴趣的文章
Devexpress 15.1.8 Breaking Changes
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
ElasticSearch Client详解
查看>>
新零售讲堂之时代下的传统零售业,何去何从?
查看>>
c++读取和写入TXT文件的整理
查看>>
linux安全问答(1)
查看>>
mybatis update返回值的意义
查看>>
expdp 详解及实例
查看>>
解读最具O2O属性—哈根达斯微信企业号的成功之道
查看>>
Extjs4.x (MVC)Controller中refs以及Ext.ComponentQuery解析
查看>>
Server-01 How to Find the Remote Desktop Port
查看>>
Java--接口、抽象与继承
查看>>
通过IP判断登录地址
查看>>
Oracle闪回技术
查看>>
CentOS 7 配置yum本地base源和阿里云epel源
查看>>
python 学习导图
查看>>
生成树
查看>>
深入浅出JavaScript (五) 详解Document.write()方法
查看>>
Beta冲刺——day6
查看>>
Comet OJ - Contest #3 题解
查看>>