基础平台架构

基础平台架构_第1张图片

目录

1、微服务架构

2、Spring Boot Admin

3、Nacos

4、gateway-网关

5、Feign Client、Ribbon、Hystrix

6、认证中心-auth

7、链路监控服务中心-Zipkin/Sky Walking

8、日志聚合系统-ELK

9、消息队列中间件-RabbitMQ、Kafka

10、异构服务集群-Sidecar

11、即时通讯

12、分布式任务调度系统-Quartz

13、分布式资源存储服务-FastDFS

14、缓存服务-Redis

15、数据库-MySQL

16、数据检索服务-ElasticSearch(Logstash)

17、数据同步-Apache NiFi


1、微服务架构

就目前而言,对于微服务业界并没有一个统一的、标准的定义(While there is no precise definition of this architectural style ) 。
但通常在其而言,微服务架构是一种架构模式或者说是一种架构风格,它提倡将单一应用程序划分成一组小的服务,每个服务运行独立的自己的进程中,服务之间互相协调、互相配合,为用户提供最终价值。
服务之间采用轻量级的通信机制互相沟通(通常是基于 HTTP 的 RESTful API ) 。每个服务都围绕着具体业务进行构建,并且能够被独立地部署到生产环境、类生产环境等。
另外,应尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据业务上下文,选择合适的语言、工具对其进行构建,可以有一个非常轻量级的集中式管理来协调这些服务。可以使用不同的语言来编写服务,也可以使用不同的数据存储。

基础平台架构_第2张图片

2、Spring Boot Admin

Spring Boot 应用程序运行状态监控和管理的后台界面。

【https://github.com/codecentric/spring-boot-admin】

常见的功能或者监控如下:

  • 显示健康状况
  • 显示应用度量指标详情,例如
    • JVM和内存指标
    • micrometer度量
    • 数据源指标
    • 缓存指标
  • 显示构建信息编号
  • 关注并下载日志文件
  • 下载 heapdump
  • 查看jvm系统和环境属性
  • 查看 Spring Boot 配置属性
  • 支持 Spring Cloud 的环境端点和刷新端点 ``
  • 支持 K8s
  • 易用的日志级别管理
  • JMX-beans交互
  • 查看线程转储
  • 查看http跟踪
  • 查看auditevents
  • 查看http-endpoints
  • 查看计划任务
  • 查看和删除活动会话(使用 Spring Session )
  • 查看Flyway/Liquibase数据库迁移
  • 状态变更通知(通过电子邮件,Slack,Hipchat等,支持钉钉)
  • 状态更改的事件日志(非持久化)

3、Nacos

【https://nacos.io/zh-cn/】

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。

4、gateway-网关

为微服务架构提供一种简单有效的统一的 API 路由管理方式。Spring Cloud Gateway 底层使用了高性能的通信框架Netty。

特征:

(1)基于 Spring Framework 5,Project Reactor 和 Spring Boot 2.0

(2)集成 Hystrix 断路器

(3)集成 Spring Cloud DiscoveryClient

(4)Predicates 和 Filters 作用于特定路由,易于编写的 Predicates 和 Filters

(5)具备一些网关的高级功能:动态路由、限流、路径重写

5、Feign Client、Ribbon、Hystrix

5.1、Feign Client

【GitHub - OpenFeign/feign: Feign makes writing java http clients easier】

Feign Client在Spring Cloud微服务中用于实现微服务之间的声明式调用。Feign 可以定义请求到其他服务的接口,用于微服务间的调用,不用自己再写http请求,在客户端实现,调用此接口就像远程调用其他服务一样,当请求出错时可以调用接口的实现类来返回。

5.2、Ribbon


GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support. - GitHub - Netflix/ribbon: Ribbon is a Inter Process Communication (remote procedure calls) library with built in software load balancers. The primary usage model involves REST calls with various serialization scheme support.https://github.com/Netflix/ribbon提供客户端的软件负载均衡算法。

Ribbon工作时分为两步:

第一步先选择 Eureka Server, 它优先选择在同一个Zone且负载较少的Server;

第二步再根据用户指定的策略,在从Server取到的服务注册列表中选择一个地址。其中Ribbon提供了多种策略,例如轮询、随机、根据响应时间加权等。

5.3、Hystrix

熔断器,容错管理工具,作为熔断流量控制。

基础平台架构_第3张图片

6、认证中心-auth

认证中心,token,权限校验,全局异常处理。

7、链路监控服务中心-Zipkin/Sky Walking


调用链监控Skywalking与Zipkin_zhuyu19911016520-CSDN博客_skywalking zipkin1.Skywalking与Zipkin的区别颗粒度:Skywalking方法级(展示的更详细),方法中所有的调用都展示出来了,如数据库调用、redis调用,第三方网络调用,而Zipkin只能展示接口级UI界面:Skywalking完胜,国产开源,更适合国人眼球代码侵入性:Skywalking无代码侵入,使用字节码增强技术,在启动服务时使用 javaagent 指向skywalking服务即可收集调用链span信息Zipkin:简单、轻量级2.安装部署对比Zipkin安装部署简单,参考:Sprhttps://blog.csdn.net/zhuyu19911016520/article/details/106782827Skywalking与Zipkin的区别
颗粒度:Skywalking方法级(展示的更详细),方法中所有的调用都展示出来了,如数据库调用、redis调用,第三方网络调用,而Zipkin只能展示接口级
UI界面:Skywalking完胜,国产开源,更适合国人眼球
代码侵入性:Skywalking无代码侵入,使用字节码增强技术,在启动服务时使用 javaagent 指向skywalking服务即可收集调用链span信息
Zipkin:简单、轻量级

Sleuth:日志收集工具包。

8、日志聚合系统-ELK

Elasticsearch是Elastic Stack核心的分布式搜索和分析引擎,是一个基于Lucene、分布式、通过Restful方式进行交互的近实时搜索平台框架。

Logstash是免费且开放的服务器端数据处理管道,能够从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。Filebeat(beats中的一种)可以用来替代logstash的数据收集功能,比较轻量级。Filebeat是用于转发和集中日志数据的轻量级传送工具。

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。

9、消息队列中间件-RabbitMQ、Kafka

【常用的几种消息队列中间件对比_doupengzp的博客-CSDN博客_消息队列中间件对比】

消息队列是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。

10、异构服务集群-Sidecar


异构微服务技术实践 - 云+社区 - 腾讯云异构微服务 = 异构 + 微服务 异构:系统中的不同功能,使用不同的技术栈。 微服务:系统可以被拆分为多个功能,这些被拆分出来的功能,可提供独立的服务,被称...https://cloud.tencent.com/developer/article/1803127异构:系统中的不同功能,使用不同的技术栈,不同的技术栈有各自擅长的领域。

Sidecar模式是一种将应用功能从应用本身剥离出来作为单独进程的方式。

11、即时通讯

基于互联网的即时交流消息。

12、分布式任务调度系统-Quartz

由于采用分布式架构,一个服务往往会部署多个冗余实例来运行业务,在这种分布式系统环境下运行任务调度称之为分布式任务调度。

分布式调度要实现的目标:

1、并行任务调度

2、高可用

3、弹性扩容

4、任务管理与监测

5、避免任务重复执行

13、分布式资源存储服务-FastDFS


【最强科普】一文读懂分布式存储 - 知乎分布式存储是近年比较火的存储技术话题。 但什么是分布式存储呢? 作为ITer,你了解吗? 如果不知道分布式存储, 肿么办? 没关系,带上小板凳,来听我跟你好好聊聊。 ▉ 存储进阶史 要深入理解分布式存储,我们需…https://zhuanlan.zhihu.com/p/312041163#:~:text=%E5%88%86%E5%B8%83%E5%BC%8F%E5%AD%98%E5%82%A8%E5%B0%B1%E6%98%AF%E5%B0%86,%E4%BC%81%E4%B8%9A%E7%9A%84%E5%90%84%E4%B8%AA%E8%A7%92%E8%90%BD%E3%80%82分布式存储就是将数据分散存储到多个存储服务器上,并将这些分散的存储资源构成一个虚拟的存储设备,实际上数据分散的存储在企业的各个角落。分布式存储的好处是提高了系统的可靠性、可用性和存取效率,还易于扩展。

14、缓存服务-Redis

缓存服务器:Memcache、Redis、Tair和Varnish是什么? - 知乎在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。那么,对于缓存服务器中最常用的技术 Memcache、Redis和Varnish是什么? MemcacheMemcache是老牌的内存缓…https://zhuanlan.zhihu.com/p/108885481

缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。

15、数据库-MySQL

16、数据检索服务-ElasticSearch(Logstash)

【Elasticsearch:官方分布式搜索和分析引擎 | Elastic】

Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。

17、数据同步-Apache NiFi

Apache NIFI 讲解(读完立即入门) - 云+社区 - 腾讯云NIFI可以处理各种各样的数据源和不同格式的数据。你可以从一个源中获取数据,对其进行转换,然后将其推送到另一个目标存储地。https://cloud.tencent.com/developer/article/1690392

一个易于使用,功能强大且可靠处理和分发数据的系统。

你可能感兴趣的:(软件,架构)