利用SpringCloud搭建一个最简单的微服务框架
利用SpringCloud搭建一个最简单的微服务框架
https://blog.csdn.net/caicongyang/article/details/52974406
1.微服务
微服务主要包含服务注册,服务发现,服务路由,服务配置,服务熔断,服务降级等一系列的服务,而Spring Cloud为我们提供了个一整套的服务;
本例子为你提供了最简单的一个服务发现例子,包含服务注册发现spingCloudEurekaServer、服务配置中心spingCloudConfServer、以及一个app应用springCloudApp
2.服务注册与发现
spingCloudEurekaServer
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.caicongyang</groupId>
<artifactId>spingCloudEurekaServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Angel.SR6</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Application.java
package com.caicongyang.eureka;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
/**
* Spring could EurekaServer程序主入口
*
* @author Administrator
*
*/
@SpringBootApplication
@EnableEurekaServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
application.yml (可用properties替代)
server: port: 9999
eureka:instance: hostname: 127.0.0.1client: registerWithEureka: falsefetchRegistry: falseserviceUrl: defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
3.服务配置(全局配置中心)
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.caicongyang</groupId>
<artifactId>spingCloudConfServer</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Angel.SR6</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
<!-- sping cloud 注册服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
<defaultGoal>compile</defaultGoal>
</build>
</project>
application.java
package com.caiconyang.conf;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
/**
* Spring could conf程序主入口
* @author Administrator
*
*/
@SpringBootApplication
@EnableConfigServer
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
application.properties
server.port=8888
## App配置文件所在git地址
spring.cloud.config.server.git.uri=https://git.oschina.net/caicongyang/springCloudConfigRepo.git
spring.cloud.config.server.git.searchPaths=repo
spring.application.name=spingCloudConfServer
4.App
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.caicongyang</groupId>
<artifactId>springCloudApp</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Angel.SR6</version>
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.7</java.version>
<java.encoding>UTF-8</java.encoding>
<springfox.swagger.version>2.2.2</springfox.swagger.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- sping cloud 监控 http://localhost:8080/health -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<!-- sping cloud 注册服务 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<!-- sping cloud 路由 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-hystrix</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>${springfox.swagger.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>${springfox.swagger.version}</version>
</dependency>
</dependencies>
<build>
<finalName>spingcould</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<encoding>${java.encoding}</encoding>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
</plugins>
</build>
</project>
Application.java
package com.caicongyang.springCloudApp.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
/**
* Spring could web程序主入口
* @author Administrator
*
*/
@Configuration//配置控制
@EnableAutoConfiguration//启用自动配置
@ComponentScan(value={"com.caicongyang.springCloudApp"})//组件扫描
@EnableDiscoveryClient
public class Application {
public static void main(String[] args) {
//第一个简单的应用,
SpringApplication.run(Application.class,args);
}
}
SwaggerConfig.java
package com.caicongyang.springCloudApp.conf;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
*
* @author caicongyang1
* @version id: SwaggerConfig, v 0.1 16/4/22 下午4:12 caicongyang1 Exp $$
*/
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Value("${swagger.ui.enable}") //该配置项在配置中心管理
private boolean environmentSpecificBooleanFlag;
@Bean
public Docket docketFactory() {
return new Docket(DocumentationType.SWAGGER_2).apiInfo(
new ApiInfo("接口文档", "SpingCloud web接口列表", "1.0", "", "", "", "")).enable(environmentSpecificBooleanFlag);
}
}
application.properties
server.port=8080
spring.cloud.config.uri=http://127.0.0.1:8888
spring.cloud.config.name=springCloudApp
spring.cloud.config.profile=${config.profile:dev}
#service discovery url
eureka.client.serviceUrl.defaultZone=http://localhost:9999/eureka/
#service name
spring.application.name=springCloudApp
5.测试与验证
顺序启动服务注册发现spingCloudEurekaServer、服务配置中心spingCloudConfServer、以及一个app应用springCloudApp
测试与验证
1.访问http://localhost:9999/eureka/ app是否已经注册上来
2.访问 http://localhost:8080/swagger-ui.html 是否正常访问,如果正常访问说明争取读取到config配置中心的swagger.ui.enable配置项
6.源码:
以上所有源码:
https://git.oschina.net/caicongyang/springcloud.git
利用SpringCloud搭建一个最简单的微服务框架相关推荐
- 利用springcloud搭建一个简易的分布式简历展示系统
开发环境 开发工具:idea+MAVEN 数据库:mysql+redis jdk版本:1.8 web容器:springboot自带的tomcat 预计用到的框架:springboot+spring c ...
- 本文为大家解释,Dapr是比SpringCloud和Istio更优雅的微服务框架的原因是什么
Dapr 是微软主导的云原生开源项目,2019年10月首次发布,到正式发布 V1.0 版本的不到一年的时间内,github star 数达到了 1.2万(现在已经超过1.7万星),超过同期的 kube ...
- python-37-python微服务框架Nameko
Python微服务框架nameko的简单使用 推荐一款 Python 微服务框架 - Nameko 微服务框架有Istio.Dubbo和nameko三种: 一.Istio Istio是一个用来连接.管 ...
- Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播)
文章目录 Linux上利用nginx搭建一个简单的rtmp视频流服务器(不涉及直播) 一.基础环境搭建 二.构建Nginx 下载nginx-rtmp-module 安装Nginx 编译nginx,代理 ...
- 一个简单的微服务项目带你上手spring cloud 全家桶
最近一个月,断断续续学习了spring cloud的主流微服务模块,然后实践了一个比较容易上手的微服务项目,现在做一个总结. 这个项目是在github上的一个比较经典的spring cloud易上手的 ...
- 最新微服务框架SpringCloud Alibaba介绍,搭建
微服务和SpringCloud Alibaba详细介绍(一),手把手搭建微服务框架 PS:本博客是本人参照B站博主:JAVA阿伟如是说 的视频讲解手敲整理的笔记 跟着一起手动搭建的框架 供大家一起学习 ...
- 抛开vue-cli 利用requireJS搭建一个vue项目
---恢复内容开始--- 现在学习vue都是利用脚手架vue-cli快速搭建一个项目,这是非常高效的方法,我是十分推荐的,但是有时候在没有互联网的情况,我们没办法在node环境下,敲一个nmp ins ...
- springcloud五大组件?注解_spring cloud实现简单的微服务架构
"读书足以怡情,足以长才.读史使人明智,读诗使人灵秀,数学使人周密,科学使人深刻,伦理学使人庄重,过度学习使人疯魔:凡有所学,皆成性格." --弗朗西斯·培根<论学习> ...
- 按步搭建简单IoT微服务(2)
整体架构 这章节我们将为系统建立一个简单的前端界面.首先安装一些依赖环境并运行起来,按照下面的步骤开始: 如果还没有准备好,可以先在获取的代码仓库 micro-services-tutorial-io ...
最新文章
- React | Expected an assignment or function call and instead saw.....
- eclipse 使用lombok 精简java bean
- vue-element-admin台前端解决方案: 基于 vue 和 element-ui实现
- sonarqube连mysql_.net持续集成sonarqube篇之sonarqube安装与基本配置
- 浅谈地方门户网站运营思路
- .net core 注入中的三种模式:Singleton、Scoped 和 Transient
- Nhibernate.hbm2ddl.auto配置详解
- 1947-2021 NBA总冠军次数排行榜
- LKT系列加密芯片如何预置openssl生成的rsa密钥完成运算(三)
- SQL数据库的下载与安装
- Spring tool suite修改主题
- 使用内网穿透实现外网访问内网地址
- 一张图讲清楚产品架构,手把手教你画产品框架图
- 一个在线五笔的例子的代码,很不错,转载过来共享
- c语言编译器提示隐式声明,在C中使用“隐式声明功能”警告有什么含义?
- 直播美颜SDK从技术层面如何自行实现
- 一张图片告诉你win10各版本之间的主要区别
- 使用chrome设置代理,果然还是linux 方便呢。想安装一个chrome的插件,通过命令设置代理。
- log4j 打印线程号配置_日志配置log4j 打印线程号
- 前端学习随笔 css篇
热门文章
- mysql 执行计划 视频_MySQL执行计划的讲解
- java generic new_java中generic实例详解
- STM32 SPI通信(读写flash)
- 使用LD链接时候文件的顺序
- 源码编译php mysql_linux下apache+mysql+php开发环境纯源代码编译搭建(转)
- 命令唤醒计算机,电脑Win10怎么使用命令查看唤醒系统设备和任务的软件的方法...
- 菜鸟学习笔记:Java提升篇8(线程2——线程的基本信息、线程安全、死锁、生产者消费者模式、任务调度)
- 【LeetCode】剑指 Offer 47. 礼物的最大价值
- 《Reids 设计与实现》第十三章 Sentinel
- 使用Sysmon分析宏病毒(Macros Downloader)