微服务领域框架比较流行的是springcloud和dubbo。
HTTP
以springcloud为例,加入dependencyManagement
<!--父级依赖 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.0.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<!-- swagger2相关依赖 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--指定此项目的仓库指向阿里云仓库 -->
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</repository>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
<repository>
<id>sonatype-nexus-snapshots</id>
<name>Sonatype Nexus Snapshots</name>
<url>https://oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
</repositories>
<!--spring 官方依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<exclusions>
<exclusion>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
</exclusion>
<exclusion>
<artifactId>bcpkix-jdk15on</artifactId>
<groupId>org.bouncycastle</groupId>
</exclusion>
</exclusions>
</dependency>
feign
app启动服务发现于feign
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class FacadeApp extends SpringBootServletInitializer {
public static void main(String[] args) {
SpringApplication.run(FacadeApp.class, args);
}
}
定义feign的接口
@FeignClient注解用于指定从哪个服务中调用功能 ,名称与被调用的服务名保持一致。
@GetMapping注解用于对被调用的微服务进行地址映射。
@PathVariable注解一定要指定参数名称,否则出错
@Component注解防止,在其他位置注入时idea报错
@FeignClient("dmp")
@Component
public interface DmpClient {
@GetMapping("/dmp-datafactory/api/db/status")
Result dbStatus();
@PostMapping("/dmp-datafactory/api/dezj/acceptdata")
Map<String, Object> acceptData(HttpServletRequest request);
}
RestTemplate
Ribbon
https://www.jianshu.com/p/1bd66db5dc46
RPC
RPC是指远程过程调用
参考:https://www.nowcoder.com/discuss/588903?from=zhnkw
dubbo
dubbo最开始的框架释义是个轻量级的RPC框架。但是随着不断的完善,也成了一个非常有利的微服务kit。尤其是在springcloud还未完善的时候,国内有很多公司的微服务架构就是采用的dubbo。后来阿里不在维护,中心移向HSF框架造成bug没人修复,国内有实力的公司基于开源版本进行了二次开发。不过近几年ali又再次开启了dubbo并进入apache孵化,热度不减。
https://dubbo.apache.org/zh/docs/quick-start/