服务提供者与服务消费者
使用微服务构建的是分布式系统,微服务之间通过网络进行通信。所以我们使用服务提供者与服务消费者来描述微服务之间的调用关系。
本文将以用户查看汽车信息系统为案列,来描述本章节的服务提供者与服务消费者之间的关系。
- 服务提供者:服务的被调用方(即提供api的服务)
- 服务消费者:服务的调用方(即调用其他服务api的服务)
微服务架构技术选型-springcloud框架
开发微服务,这里我选择了springloud,相对其他框架如daboo,它提供了更多开箱即用的组件如:网关,注册服务、服务配置、消息总线服务、提供方便的服务节点集群管理等。
一、springcloud特点
1、适用于各种环境,如windows、Linux等操作系统。
2、组件简单易用,并提供声明式、无xml的配置方式。
3、开箱即用,简单在pom.xml文件下依赖,即可快速启动。
4、轻量级的组件,功能齐全。springcloud为微服务架构提供了非常完善的支持,例如配置管理、服务发现、断路器、服务网关等。
5、灵活搭配组件,springcloud的组成部分都是解耦的,开发人员可按需灵活挑选技术组件。
二、服务提供者
2.1 本节将编写一个提供查看汽车型号的微服务提供者(汽车管理微服务)
2.2 创建maven项目,编辑pom.xml
在pom.xml文件中添加以下内容:
<!---依赖springcloud版本->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.6.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
增加web组件依赖,在pom.xml文件添加以下内容:
<!-- web包依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
修改application.yml文件,配置服务端口为8888,应用服务名为car-service修改内容如下:
server:
port: 8888
spring:
application:
name: car-service
在项目中创建app.java文件,内容如下:
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ApplicationContext;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import com.iot.utils.SpringContextUtil;
/**
* ClassName:App
* Function: TODO ADD FUNCTION
* Reason: TODO ADD REASON
* @author hsy
* @version
* @since Ver 1.1
* @Date 2020年8月09日 下午14:34:36
*/
@RestController
@SpringBootApplication
public class App {
public static void main(String[] args) {
ApplicationContext app = SpringApplication.run(App.class, args);
SpringContextUtil.setApplicationContext(app);
}
/**
* @Title carInfo
* @Description 查看汽车api接口
* @return String
*/
@GetMapping("/carInfo")
public String carInfo() {
return "bmw 宝马7系列";
}
注意:在创建app启动类时,最好把package写在com顶层,这样即可加载项目所有注解类,避免了有些不在与启动类同包下加载失败而导致的空指针问题。
就这样,我们就快速完成了汽车服务提供者的开发完成了。是不是springcloud框架很简单,下一节我们将介绍如何使用服务消费来调用汽车服务提供者的api,今天就码到这了,如果本博客对大家有带来好处的请帮忙点击收藏或转发下,当然有我有写的不明白的,也可以评论下给我,谢谢了哈。