spring cloud的入门级别的系统搭建
来源:互联网 发布:sql查询怎么指定别名 编辑:程序博客网 时间:2024/06/05 15:49
spring cloud是一套非常好的微服务架构解决方案,其原理和使用zookeeper及dubbo有些类似,将服务的生产者注册至服务中心,消费者去服务中心订阅该消费者,并进行消费,原理图如下:
系统背景:客户调用A系统获取数据,A系统需要将基本数据去B系统计算结果。
注册服务中心的搭建
- 导入依赖(spring cloud是基于spring boot的,所以需要导入spring boot的依赖):
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version></parent><!-- 导入Spring Cloud的依赖管理 --><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement><dependencies> <!-- 导入Eureka服务的依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency> <!-- 注册服务中心设置登录权限 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency></dependencies><build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins></build>
2.配置文件编写(application.yml):
server: port: 6868 #服务端口eureka: client: registerWithEureka: false #是否将自己注册到Eureka服务中,本身就是所有无需注册 fetchRegistry: false #是否从Eureka中获取注册信息 serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址 defaultZone: http://cloud:cloud@127.0.0.1:${server.port}/eureka/security: basic: enable: true #开启基于HTTP basic的认证 user: #配置用户的账号信息 name: cloud password: cloud
3.启动类:
@EnableEurekaServer //申明这是一个Eureka服务@SpringBootApplicationpublic class EurekaServer { public static void main(String[] args) { SpringApplication.run(EurekaServer.class, args); }}
启动该服务,登录127.0.0.1:6868,进入注册服务中心控制台:
到此,注册中心就搭建完成,但是还没有服务注册。
计算系统的搭建
1.导入依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version></parent><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> </dependency></dependencies><build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins></build>
2.配置文件的编写
server: port: 8082spring: application: name: com-spring-caclulate #指定服务名eureka: client: registerWithEureka: true #是否将自己注册到Eureka服务中,默认为true fetchRegistry: true #是否从Eureka中获取注册信息,默认为true serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址 defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/ instance: prefer-ip-address: true #将自己的ip地址注册到Eureka服务中
3.启动类
@EnableDiscoveryClient//申请成为注册服务中心的客户端@SpringBootApplication //申明这是一个Spring Boot项目public class CacluApplication { public static void main(String[] args) { SpringApplication.run(ItemApplication.class, args); }}
4.功能代码(系统中的业务代码)
@RestControllerpublic class CacluController { /** * 对外提供接口服务,计算数据 * * @param num * @return */ //@RequestMapping(method = RequestMethod.GET) @GetMapping(value = "caclu/{num}") public Integer caclulate(@PathVariable("num") Integer num) { return num*10; }}
启动商品系统,再次登录注册服务中心,我们发现该服务已经注册了。
消费系统的搭建
1.导入依赖
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version></parent><dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR3</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies></dependencyManagement><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <exclusions> <exclusion> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> </exclusion> </exclusions> </dependency></dependencies><build> <finalName>${project.artifactId}</finalName> <plugins> <!-- 资源文件拷贝插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <configuration> <encoding>UTF-8</encoding> </configuration> </plugin> <!-- java编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> </configuration> </plugin> </plugins></build>
2.配置文件
server: port: 8083eureka: client: registerWithEureka: false #是否将自己注册到Eureka服务中,默认为true fetchRegistry: true #是否从Eureka中获取注册信息,默认为true serviceUrl: #Eureka客户端与Eureka服务端进行交互的地址 defaultZone: http://cloud:cloud@127.0.0.1:6868/eureka/
3.启动类
@EnableDiscoveryClient@SpringBootApplicationpublic class OrderApplication { @Bean // 向Spring容器中定义RestTemplate对象 public RestTemplate restTemplate(){ return new RestTemplate(new OkHttp3ClientHttpRequestFactory()); } public static void main(String[] args) { SpringApplication.run(OrderApplication.class, args); }}
4.业务代码
@RestControllerpublic class OrderController { @Autowired private RestTemplate restTemplate; @Autowired private DiscoveryClient discoveryClient; @GetMapping(value = "query/result") public Integer caclulate() { String serviceId = "com-spring-caclulate"; List<ServiceInstance> instances = this.discoveryClient.getInstances(serviceId); if(instances.isEmpty()){ return null; } ServiceInstance serviceInstance = instances.get(0); String url = serviceInstance.getHost() + ":" + serviceInstance.getPort(); return this.restTemplate.getForObject("http://" + url + "/caclu/1", Integer.class); }}
启动服务,并访问接口,我们调用时num为1,计算结果为10。
阅读全文
0 0
- spring cloud的入门级别的系统搭建
- spring boot + spring cloud日志级别的配置logback.xml
- 搭建一个基础的Spring Cloud项目
- spring cloud 注册中心的搭建
- 搭建 spring cloud config 遇到的问题
- redis spring入门级别的CUBD
- 【Spring Cloud学习】 搭建简单的服务注册中心Spring cloud Eureka
- Spring cloud+RabbitMQ入门级 就是指的Spring cloud Bus
- 搭建基于Spring Cloud的微服务注册中心
- spring cloud config整合gitlab搭建分布式的配置中心
- spring cloud 搭建高可用的注册中心
- 搭建基于Spring Cloud的微服务应用
- spring cloud config整合gitlab搭建分布式的配置中心
- spring cloud 如何搭建高可用的安全框架。
- 基于SPRING CLOUD开发的基础环境搭建
- 对于Spring Cloud Feign入门示例的一点思考
- spring框架的搭建--入门
- 入门级别的sqlHelpser
- 深入浅出了解 JavaScript 中的 this
- 线程同步-信号量
- Android ListView异步加载图片乱序问题,原因分析及解决方案
- 海云安:利益博弈,APP安全漏洞背后的攻防交锋
- 如何在vue里面优雅的解决跨域,路由冲突问题
- spring cloud的入门级别的系统搭建
- 关于获取应用basePath
- hadoop创建本地yum版本库
- 欢迎使用CSDN-markdown编辑器
- 网站视频下载破解 以及 Mac 下视频格式转换
- Android如何得到当前正在屏幕上运行的程序包名?
- nice validator的一些小收获
- 精通 gulp 常用插件的功能和用法
- bzoj1669 [Usaco2006 Oct]Hungry Cows饥饿的奶牛