分析微服务会用到哪些技术

83 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第1天

Spring Cloud:http://projects.spring.io/spring-cloud(现在非常流行的微服务架构)

Dubbo:http://dubbo.io

Dropwizard:http://www.dropwizard.io (关注单个微服务的开发)

Consul、etcd&etc.(微服务的模块)


微服务最低组件要求是:api网关、注册中心、提供者(provider)、消费者(consumer)

SpringCloud(也加上SpringBoot),没用dubbo

Dubbo有自己的一套技术
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。

SpringCloud
Spring Cloud 基于 Spring Boot,为微服务体系开发中的架构问题,提供了一整套的解决方案——服务注册与发现,服务消费,服务保护与熔断,网关,分布式调用追踪,分布式配置管理等。
Spring Boot 是 Spring 的一套快速配置脚手架,使用默认大于配置的理念,用于快速开发单个微服务。

基于 Spring Boot
云服务、分布式框架集合(众多)

1、服务治理,也称注册中心,用的是Nacos,以前市场上常有的是springcloud自身的Eureka
在这里插入图片描述

<!--注册中心客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--配置中心客户端-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

在这里插入图片描述

2、容错机制
feigin+sentinel

微服务之间通过 Feign 进行通信处理业务。

Hystrix 负责处理服务超时熔断。
断路器——Netflix Hystrix(Sentinel)
Turbine 监控服务间的调用和熔断相关指标。
Integration/Stream : MQ接口绑定
Bus : 事件监听
微服务组件配置Bus、Config,带你了解微服务组件配置
Sleuth+Zipkin : 分布式链路追踪

3、服务网关
SpringCloud Gateway
gateway
后面我们可以在gateway输出下请求的uri

4、均衡负载
Ribbon
5、同步通信与异步通信
http
在这里插入图片描述
RocketMQ(mq各有优缺点)

<dependency>
            <groupId>org.springframework.kafka</groupId>
            <artifactId>spring-kafka</artifactId>
        </dependency>

6、Git :用内部GitLab (市场上github,gitee)

7、SQL: MySQL、MongoDB
实时的排名参见 http//db-engines.com/en/ranking 网站

8、NoSQL: Redis、ES
在这里插入图片描述

<!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-integration</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.2.5.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
        </dependency>

org.elasticsearch.client elasticsearch-rest-high-level-client org.elasticsearch.client elasticsearch-rest-client
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-client</artifactId>
        <version>${elasticsearch.version}</version>
    </dependency>

**9、配置中心**  
nacos

    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
    </dependency>
    <!--配置中心客户端-->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
    </dependency>

市场上springcloud Config

10、安全模块

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-security</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.security.oauth.boot</groupId>
        <artifactId>spring-security-oauth2-autoconfigure</artifactId>
    </dependency>

11、接口文档

lego-common com.lego 1.0.7 1.1.2 4.0.0

<artifactId>lego-common-swagger</artifactId>
<packaging>jar</packaging>

<description>接口文档</description>

<properties>
    <knife4j-spring-ui.version>2.0.3</knife4j-spring-ui.version>
</properties>


<dependencies>
    <!--swagger 依赖-->
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger2</artifactId>
        <version>${swagger.fox.version}</version>
    </dependency>
    <dependency>
        <groupId>io.springfox</groupId>
        <artifactId>springfox-swagger-ui</artifactId>
        <version>${swagger.fox.version}</version>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-spring-boot-starter</artifactId>
        <version>${knife4j-spring-ui.version}</version>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>knife4j-micro-spring-boot-starter</artifactId>
        <version>${knife4j-spring-ui.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>com.github.xiaoymin</groupId>
        <artifactId>swagger-bootstrap-ui</artifactId>
    </dependency>
</dependencies>

12、mybatis-plus

com.baomidou mybatis-plus-extension 3.0.5

> 本文使用 [文章同步助手](https://juejin.cn/post/6940875049587097631) 同步