龙空技术网

Spring Cloud应用实例

IT讲坛 709

前言:

而今各位老铁们对“springcloud案例”大体比较珍视,你们都想要学习一些“springcloud案例”的相关文章。那么小编也在网络上汇集了一些对于“springcloud案例””的相关内容,希望你们能喜欢,咱们快快来学习一下吧!

前言:

图中可以看出,我们对服务进行了分类,大致以下四种:

基础服务,指一些基础类型的组件。比如:短信服务、邮件服务。这里的服务只是最容易摘出来的微服务,也是我们第一级优先分离出来。业务服务,指一些垂直领域的业务系统,只处理单一的业务类型,比如:风控系统、积分系统、合同系统、审批系统。这类服务职责单一,无需关注技术实现,重在业务逻辑的实现,是我们的第二级优先分离出来的服务。前置服务,指服务的接入或者输出服务,例如银联前置服务,网站的前端服务、app的服务接口之类的服务,业务进来之前优先经过的系统,这是我们第三级优先分离出来的服务。组合服务,组合服务就是涉及到了具体的业务,比如买标过程,需要调用很多垂直的业务服务,这类的服务我们一般放到最后再进行微服务化架构来改造,因为这类服务最为复杂,除非涉及到大的业务逻辑变更,我们是不会轻易进行迁移。

正文:

首先在微服务Eureka中注册两个微服务Config Server和Config Client。

1. 新建Config Server服务

Config Server中定义了两个服务接口(一个Post、一个Get方法)

Controller.java完整代码如下:

package demo.controller;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RestController;import demo.model.User;@RestController@RefreshScopepublic class Controller { @GetMapping(value="s") String helloServer(String username) { return "Hello " + username + "!"; } @PostMapping(value="u") String helloUser(@RequestBody User user) { return "Hello " + user + "!"; }}

2.新建Config Client

在Config Client(spring.application.name=test-dev)时,我们使用Config Server中已经定义好的这两个微服务。

FindService.java完整代码如下:

import org.springframework.cloud.netflix.feign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestParam;import cn.test.bean.User;@FeignClient(value = "config-service")public interface FindService { @GetMapping(value="s") String helloServer(@RequestParam("username")String username); @PostMapping(value="u") String helloUser(@RequestBody User user);}

说明:

如果是Get方法中通过@RequestParam指定参数,则调用时候需要传递参数,应用启动时还需添加@EnableFeignClients注解。

3.新建测试方法

FindServiceTest.java完整代码如下:

/**

* @package: com.beijingdesigner.test

* @description: FindServiceTest

* @author: IT讲坛

* @create: 2018-11-21 10:35

**/

public class FindServiceTest {

public static void main(String[] args) {

@Autowired

private FindService service;

@GetMapping("/find")

String find(String param) {

return "find " + service.helloServer(param);

}

@PostMapping("/f")

String findUser(@RequestBody User user) {

return "find " + service.helloUser(user);

}

}

} }

4.测试结果

也可以用postman调用feign层,调用结果如下:

补充:

Spring Cloud体系介绍:

Spring Cloud Config 配置中心,利用git集中管理各个微服务的配置。Spring Cloud Netflix 集成众多Netflix的开源的软件Spring Cloud Bus 消息总线,利用分布式消息将服务和服务实例连接在一起,用于在一个集群中传播状态的变化Spring Cloud for Cloud Foundry 利用Pivotal Cloudfoundry集成你的应用程序Spring Cloud Cloud Foundry Service Broker 为建立管理云托管服务的服务代理提供了一个起点。Spring Cloud Cluster 基于Zookeeper, Redis, Hazelcast, Consul实现的领导选举和平民状态模式的抽象和实现。Spring Cloud Sleuth SpringCloud应用的分布式追踪系统,和Zipkin,HTrace,ELK兼容。Spring Cloud Data Flow 一个云本地程序和操作模型,组成数据微服务在一个结构化的平台上。Spring Cloud Stream 基于Redis,Rabbit,Kafka实现的消息微服务,简单声明模型用以在Spring Cloud应用中收发消息。Spring Cloud Task 短生命周期的微服务,为SpringBooot应用简单声明添加功能和非功能特性。Spring Cloud Zookeeper 服务发现和配置管理基于Apache Zookeeper。

关注+回复【spring】或则【cloud】获取springCloud微服务全栈技术与案例实战讲解。

标签: #springcloud案例