- 作者:林必昭
- 描述:该文章详细列举的服务技术栈的抓哟技术都有哪些,分别时用来做什么的
微服务开发技术栈
微服务“两大门派”
- 阿里系
- Apache Dubbo
- Nacos
- Sentinel
- RocketMQ
- Spring Cloud
- Netflix Eureka
- Netflix Ribbon
- Netflix Hystrix
- Netflix Zuul
- Spring Cloud Config
Spring Cloud Alibaba
Spring Cloud Alibaba为分布式应用程序开发提供了一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松使用Spring Cloud开发应用程序。使用Spring Cloud Alibaba,您只需添加一些注释和少量配置即可将Spring Cloud应用程序连接到Alibaba的分布式解决方案,并使用Alibaba中间件构建分布式应用程序系统。
特征:
- 流控制和服务降级:默认情况下,支持HTTP服务的流控制。您还可以使用注释来自定义流控制和服务降级规则。规则可以动态更改。
- 服务注册和发现:可以注册服务,并且客户可以使用Spring托管的bean(自动集成功能区)发现实例。
- 分布式配置:支持分布式系统中的外部配置,配置更改时自动刷新。
- 事件驱动:支持构建与共享消息系统连接的高度可扩展的事件驱动微服务。
- 分布式事务:支持高性能且易于使用的分布式事务解决方案。
- 阿里云对象存储:大规模,安全,低成本,高度可靠的云存储服务。支持随时随地在任何应用程序中存储和访问任何类型的数据。
- 阿里云SchedulerX:准确,高度可靠,高可用性的计划作业调度服务,响应时间在几秒钟内。
- 阿里云短信:阿里云短信服务覆盖全球,可提供便捷,高效,智能的通信功能,帮助企业快速联系客户。
微服务注册发现
作用:发现服务,注册服务,集中管理服务
Eureka
- Eureka Server : 提供服务注册服务, 各个节点启动后,会在 Eureka Server 中进行注册。
- Eureka Client : 简化与 Eureka Server 的交互操作
- Spring Cloud Netflix : GitHub,文档
Zookeeper
ZooKeeper is a centralized service for maintaining configuration information, naming, providing distributed synchronization, and providing group services.
Zookeeper 是一个集中的服务, 用于维护配置信息、命名、提供分布式同步和提供组服务。
Zookeeper 和 Eureka 区别
Zookeeper 保证 CP,Eureka 保证 AP:
- C:数据一致性;
- A:服务可用性;
- P:服务对网络分区故障的容错性,这三个特性在任何分布式系统中不能同时满足,最多同时满足两个。
权限认证
作用: 根据系统设置的安全规则或者安全策略, 用户可以访问而且只能访问自己被授权的资源,不多不少。
微服务调用
介绍:通信协议
- REST
- 通过HTTP/HTTPSf阿松Rest请求进行数据交互
- RPC( Remote Procedure Call )
- 它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 不依赖于具体的网络传输协议,tcp、udp 等都可以。
- gRPC
A high-performance, open-source universal RPC framework.
所谓 RPC(remote procedure call 远程过程调用) 框架实际是提供了一套机制,使得应用程序之间可以进行通信,而且也遵从 server/client 模型。使用的时候客户端调用 server 端提供的接口就像是调用本地的函数一样。
服务接口调用
作用:多个服务之间的通讯。
Feign(HTTP)
Spring Cloud Netflix 的微服务都是以 HTTP 接口的形式暴露的,所以可以用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去调用,而 Feign 是一个使用起来更加方便的 HTTP 客戶端,使用起来就像是调用自身工程的方法,而感觉不到是调用远程方法。
服务熔断
作用:当请求到达一定的阈值时不让请求继续。
服务的负载均衡
作用:降低服务压力,将请求分摊,提高吞吐量。
- Ribbon
- Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具, 它基于 Netflix Ribbon 实现
- Github
- Nginx
- ginx 属于服务端负载均衡,Ribbon 属于客户端负载均衡.Nginx 作用与 Tomcat,Ribbon 作用与各个服务之间的调用 (RPC)
消息队列
作用:解耦业务,异步化处理数据。
RabbitMQ
Kafka
RocketMQ
activeMQ
API网关
Zuul
作用: 外部请求通过 API 网关进行拦截处理, 再转发到真正的服务
Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
非关系型数据库
Mongodb
缓存
Redis
作用:可用作数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。
服务部署
Docker
Jenkins
Kubernetes(K8s)
来源:oschina
链接:https://my.oschina.net/jacklinnn/blog/4332477