乐趣区

关于微服务:微服务架构技术栈

前言

对于业务较为简单的我的项目,微服务架构是大家首选的解决方案;对于咱们开发者来说,有好的解决方案必定要跟进学习,但不能自觉追崇风行技术,目标还是为了解决问题,该文次要对微服务架构所蕴含技术栈进行汇总,一起来看看吧!

微服务开发

作用:疾速开发服务。

  • Spring
  • Spring MVC
  • Spring Boot

Spring 目前是 JavaWeb 开发人员必不可少的一个框架,SpringBoot 简化了 Spring 开发的配置目前也是业内支流开发框架。

微服务注册发现

作用:发现服务,注册服务,集中管理服务。

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:服务对网络分区故障的容错性,这三个个性在任何分布式系统中不能同时满足,最多同时满足两个。

微服务配置管理

作用:对立治理一个或多个服务的配置信息, 集中管理。

Disconf

Distributed Configuration Management Platform(分布式配置管理平台) , 它是专一于各种分布式系统配置管理 的通用组件 / 通用平台, 提供对立的配置管理服务, 是一套残缺的基于 zookeeper 的分布式配置对立解决方案。

SpringCloudConfig

Apollo

Apollo(阿波罗)是携程框架部门研发的分布式配置核心,可能集中化治理利用不同环境、不同集群的配置,配置批改后可能实时推送到利用端,并且具备标准的权限、流程治理等个性,用于微服务配置管理场景。

权限认证

作用:依据零碎设置的平安规定或者安全策略, 用户能够拜访而且只能拜访本人被受权的资源,不多不少。

Spring Security

Apache Shiro

Apache Shiro™ is a powerful and easy-to-use Java security framework that performs authentication, authorization, cryptography, and session management. With Shiro’s easy-to-understand API, you can quickly and easily secure any application – from the smallest mobile applications to the largest web and enterprise applications.

批处理

作用: 批量解决同类型数据或事物

Spring Batch

定时工作

作用: 定时做什么。

Quartz

微服务调用 (协定)

通信协定

Rest

  • 通过 HTTP/HTTPS 发送 Rest 申请进行数据交互

RPC

  • Remote Procedure Call
  • 它是一种通过网络从近程计算机程序上申请服务,而不须要理解底层网络技术的协定。RPC 不依赖于具体的网络传输协定,tcp、udp 等都能够。

gRPC

A high-performance, open-source universal RPC framework

所谓 RPC(remote procedure call 近程过程调用) 框架理论是提供了一套机制,使得应用程序之间能够进行通信,而且也听从 server/client 模型。应用的时候客户端调用 server 端提供的接口就像是调用本地的函数一样。

RMI

  • Remote Method Invocation
  • 纯 Java 调用

服务接口调用

作用:多个服务之间的通信

Feign(HTTP)

Spring Cloud Netflix 的微服务都是以 HTTP 接口的模式裸露的,所以能够用 Apache 的 HttpClient 或 Spring 的 RestTemplate 去调用,而 Feign 是一个应用起来更加不便的 HTTP 客戶端,应用起来就像是调用本身工程的办法,而感觉不到是调用近程办法。

服务熔断

作用: 当申请达到肯定阈值时不让申请持续.

Hystrix

Hystrix is a latency and fault tolerance library designed to isolate points of access to remote systems, services and 3rd party libraries, stop cascading failure and enable resilience in complex distributed systems where failure is inevitable.

Sentinel

A lightweight powerful flow control component enabling reliability and monitoring for microservices. (轻量级的流量管制、熔断降级 Java 库)

服务的负载平衡

作用:升高服务压力, 减少吞吐量

Ribbon

Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载平衡工具, 它基于 Netflix Ribbon 实现

Nginx

Nginx (engine x) 是一个高性能的 HTTP 和反向代理 web 服务器, 同时也提供了 IMAP/POP3/SMTP 服务

Nginx 与 Ribbon 区别

Nginx 属于服务端负载平衡,Ribbon 属于客户端负载平衡。Nginx 作用与 Tomcat,Ribbon 作用与各个服务之间的调用 (RPC)。

音讯队列

作用: 解耦业务, 异步化解决数据

Kafka

RabbitMQ

RocketMQ

activeMQ

日志采集 (elk)

作用: 收集各服务日志提供日志剖析、用户画像等

Elasticsearch

Logstash

Kibana

API 网关

作用: 内部申请通过 API 网关进行拦挡解决, 再转发到真正的服务

Zuul

Zuul is a gateway service that provides dynamic routing, monitoring, resiliency, security, and more.

服务监控

作用: 以可视化或非可视化的模式展现出各个服务的运行状况 (CPU、内存、访问量等)

Zabbix

Nagios

Metrics

服务链路追踪

作用: 明确服务之间的调用关系

Zipkin

Brave

数据存储

作用: 存储数据

关系型数据库

MySql
Oracle
MsSQL
PostgreSql

非关系型数据库

Mongodb
Elasticsearch

缓存

作用: 存储数据

redis

分库分表

作用: 数据库分库分表计划.

ShardingSphere

Mycat

服务部署

作用: 将我的项目疾速部署、上线、继续集成.

Docker

Jenkins

Kubernetes(K8s)

Mesos

退出移动版