SpringBoot分布式 - SpringCloud
一:介绍
- Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。
- 微服务(Microservices Architecture)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
- Spring Cloud 中文文档 https://springcloud.cc/spring-cloud-dalston.html
- Spring Cloud 官方文档 http://projects.spring.io/spring-cloud/#quick-start
- SpringCloud 教程PDF下载:https://download.csdn.net/download/yueshutong123/10501017
二:入门
- 在IDEA新建空白工程
1. 注册中心
- 在工程下新建模块eureka-server
1)导包
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
2 )application.yml配置Eureka信息
server: port: 8761 eureka: 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 @SpringBootApplication public class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
4)开启注册中心
- 启动该应用,访问http://localhost:8761/ 进入Spring Eureka页面即成功。
2.服务提供者
- 新建模块:provider-ticket
1)导入依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency>
2)application.yml配置Eureka信息
server: port: 8001 #8002 spring: application: name: provider-ticket eureka: 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 */ @Service public class TicketService { public String getTicket(){ return "《厉害了,我的国》"; } }
4)暴露HTTP接口
/** * Create by yster@foxmail.com 2018/6/4/004 18:39 */ @RestController public 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: 8200 spring: application: name: consumer-user eureka: 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 /*开启发现服务功能*/ @SpringBootApplication public 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 */ @RestController public 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的更多内容推荐阅读:SpringCloud分布式教程
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
MOBA类游戏解决方案
一、行业综述 MOBA是英文Multiplayer Online Battle Arena Games的缩写,意为多人联机在线游戏竞技。2003年,暴雪发布发布实时RTS游戏《魔兽争霸》,在这款游戏中,玩家可以自定义地图,其中的Dota地图可以说是如今MOBA游戏最相像的原型。 2015年,行业排名第一的Moba游戏 英雄联盟 (又名LOL)营业额达16.7亿美元,月平均活跃人数超过1亿用户,排名第二的Moba游戏《Dota2》年收入达3亿美金。 随着LOL和《Dota2》的火爆,其他游戏厂商也不甘寂寞,Moba类游戏如雨后春笋般一夜之间布满网游届比较有代表性的有《风暴英雄》《超神英雄》《自由之战》《神之浩劫》等。 与此同时,基于MOBA游戏的线下电子竞技赛事开始火爆。国内以虎牙直播、斗鱼TV为代表的游戏直播平台也被推上了风口浪尖。 (20
- 下一篇
MobPush推送实现解析
从MobPush聊推送一、MobPush概述MobPush是MOB继一系列公共SDK之后推出的一款专注推送服务的免费SDK。可以帮助开发者更快、更方便集成实现推送功能。推送可以大幅度提升用户活跃度,有效唤醒沉睡用户。目前MobPush可支持IOS 、Android两大平台APP集成,提供Rest API 方便开发者灵活发送推送消息,并且提供完整的可视化数据和强大管理后台。在推送形式上已经完全支持基本的通知栏消息、透传消息、本地消息的推送,并且可设置定时下发推送功能;在考虑精准推送上,MobPush支持不同程度的推送范围发送---Registration ID 、别名、标签、地理位置以及精细化的用户分群方式。二、推送模式解析MobPush整体使用MobPush自有通道+厂商通道的方式,厂商通道包括IOS的APNs,Android的厂商通道包括华为、小米、魅族三个通道;MobPush自有通道是自定义的一套基于UDP的更为简单的二进制网络通信协议。如下图先看下整体的推送流程:以上是MobPush整体的流程, IOS的通知栏消息全部是基于APNs首先下发的,但是如果APNs发送失败,我们会再尝...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- MySQL8.0.19开启GTID主从同步CentOS8
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Hadoop3单机部署,实现最简伪集群