开发架构系列1-什么是 Nacos、Zipkin、工单、ZooKeeper、xxl-job、jenkins、 JSP、Servlet、EFK、Grafana、RDP、eclipse、ProM

435 篇文章 6 订阅

什么是 Nacos?:https://zhuanlan.zhihu.com/p/63140902
什么是Nacos?Nacos注册配置中心介绍:https://www.jianshu.com/p/39ade28c150d

一、什么是Nacos
英文全称Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。服务在nacos是一等公民

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现、配置和管理:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Zipkin

Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),基于 Google Dapper的论文设计而来,由 Twitter 公司开发贡献。其主要功能是聚集来自各个异构系统的实时监控数据。

Zipkin 是 Twitter 的一个开源项目,它基于 Google Dapper 实现,它致力于收集服务的定时数据,以 解决微服务架构中的延迟问题,包括数据的收集、存储、查找和展现。 我们可以使用它来收集各个服务 器上请求链路的跟踪数据,并通过它提供的 REST API 接口来辅助我们查询跟踪数据以实现对分布式系 统的监控程序,从而及时地发现系统中出现的延迟升高问题并找出系统性能瓶颈的根源。除了面向开发 的 API 接口之外,它也提供了方便的 UI 组件来帮助我们直观的搜索跟踪信息和分析请求链路明细,比 如:可以查询某段时间内各用户请求的处理时间等。 Zipkin 提供了可插拔数据存储方式:InMemory、MySql、Cassandra 以及 Elasticsearch。
在这里插入图片描述

上图展示了 Zipkin 的基础架构,它主要由 4 个核心组件构成:
Collector:收集器组件,它主要用于处理从外部系统发送过来的跟踪信息,将这些信息转换为 Zipkin 内部处理的 Span 格式,以支持后续的存储、分析、展示等功能。

Storage:存储组件,它主要对处理收集器接收到的跟踪信息,默认会将这些信息存储在内存中, 我们也可以修改此存储策略,通过使用其他存储组件将跟踪信息存储到数据库中。

RESTful API:API 组件,它主要用来提供外部访问接口。比如给客户端展示跟踪信息,或是外接 系统访问以实现监控等。

Web UI:UI 组件,基于 API 组件实现的上层应用。通过 UI 组件用户可以方便而有直观地查询和 分析跟踪信息。

Zipkin 分为两端,一个是 Zipkin 服务端,一个是 Zipkin 客户端,客户端也就是微服务的应用。 客户端会配置服务端的 URL 地址,一旦发生服务间的调用的时候,会被配置在微服务里面的 Sleuth 的 监听器监听,并生成相应的 Trace 和 Span 信息发送给服务端。 发送的方式主要有两种,一种是 HTTP 报文的方式,还有一种是消息总线的方式如 RabbitMQ。不论哪种方式,我们都需要:一个 Eureka 服务注册中心,这里我们就用之前的 eureka 项目来当注册中心。 一个 Zipkin 服务端。 多个微服务,这些微服务中配置Zipkin 客户端。

工单

内部流转的单据
什么是工单管理:https://meiqia.com/blog/gong-dan-guan-li/
在这里插入图片描述
我们购买一件商品时,接触最多的是服务团队,也就是说,一个产品交付前后,与客户最亲密的不是上级,而是服务团队,从售前售后,到线上线下,服务团队都会将消费者的反馈直接放入统一的系统内,转换顾客的行为,最终影响顾客的意见,从而实现 ‘ 客户成功 ’ 。

顾名思义,服务团队不可能只是一个人,那他们是怎样做到内部流传,达到客户满意的?
工单一词,在百度上被解释为一种专业名词,是指记录、跟踪、处理一项工作的完成情况。
也就是说,它有两种作用:

  1. 它是用来记录、跟进处理客户问题的一种单据;
  2. 用来跟进客户问题的单据。

ZooKeeper

ZooKeeper是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务。
分布式应用程序可以基于ZooKeeper实现数据发布与订阅、负载均衡、命名服务、分布式协调与通知、集群管理、Leader选举、分布式锁、分布式队列等功能。
ZooKeeper致力于为分布式应用提供一个高性能、高可用,且具有严格顺序访问控制能力的分布式协调服务
ZooKeeper将全量数据存储在内存中,并直接服务于客户端的所有非事务请求,尤其适用于以读为主的应用场景
对于来自客户端的每个更新请求,ZooKeeper都会分配一个全局唯一的递增编号,这个编号反映了所有事务操作的先后顺序

xxl-job

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
而且在现在分布式的架构中,有一些场景需要分布式任务调度:
1、同一个服务多个实例的任务存在互斥时,需要统一的调度。
2、任务调度需要支持高可用、监控、故障告警。
3、需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。
显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。

相对来说,xxl-job中心式的调度平台轻量级,开箱即用,操作简易,上手快,与SpringBoot有非常好的集成,而且监控界面就集成在调度中心,界面又简洁,对于企业维护起来成本不高,还有失败的邮件告警等等。这就使很多企业选择xxl-job做调度平台。

堡垒机jumpserver

在这里插入图片描述
堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、及时处理及审计定责。
总结:堡垒机比跳板机多了实时收集、监控网络环境、集中报警等功能。
Jumpserver 概述:Jumpserver 是一款使用 Python, Django 开发的开源跳板机系统, 为互联网企业提供了认证,授

堡垒机,也叫做运维安全审计系统,它的核心功能是 4A:
身份验证 Authentication
账号管理 Account
授权控制 Authorization
安全审计 Audit简单
总结一句话:堡垒机是用来控制哪些人可以登录哪些资产(事先防范和事中控制),以及录像记录登录资产后做了什么事情(事后溯源)。

与传统堡垒机相比, Jumpserver 采用了分布式架构设计,支持多云环境并可灵活扩展。资产管理方面, Jumpserver 无并发和资产数量限制,支持水平扩容。 Jumpserver 采用了业界领先的容器化部署方式,并且提供体验极佳的 Web Terminal 。 Jumpserver 还可实现基于 Web 的文件传输,并且支持用户将运维审计录像保存在云端(例如 AWS S3 、阿里云 OSS 、 ElasticSearch 等)。

Tomcat

Tomcat就是这么简单:https://zhuanlan.zhihu.com/p/33564233
因为Flask自带了一个Web服务器,是在其必备依赖Werkzeug中实现的。所以在开发时,可以直接启动服务,而不需要通过Tomcat或Apache。不过,由于内置服务器自身处理能力有限,在生产环境中还是需要使用其他的Web服务器。这也是Flask官方建议的。

什么是Tomcat
Tomcat简单的说就是一个运行JAVA的网络服务器,底层是Socket的一个程序,它也是JSP和Serlvet的一个容器。

为什么我们需要用到Tomcat
如果你学过html,css,你会知道你写的页面只能自己访问,别人不能远程访问你写的页面,Tomcat就是提供能够让别人访问自己写的页面的一个程序

在这里插入图片描述
一、WebServe 分类
按照我个人对web服务器的理解,我将其分为两类:

1、一类是以nginx、Apache Http Server为代表的通用的Web Server

2、一类是基于语言的web Server,比如C++的Piatache、Java的Tomcat、Python的gunicorn等

区分的依据主要是,是否可以执行计算任务!

二、WebServe 执行流程
详细的说,一个web服务器的工作是什么呢?其实就是:

1、监听用户的请求

2、收到请求后对HTTP请求进行解析

3、根据解析的内容,返回数据

jenkins

持续集成:什么是 Jenkins, 为什么如此重要 ?:”https://blog.csdn.net/Shinranyao/article/details/109197525
能够从新代码中获得即时反馈很重要。你获得反馈的速度越快,问题越早得到解决。获得反馈的一种常见方法是在新代码之后运行测试,但这会导致其他问题。当代码正在编译并且正在运行测试时,开发人员无法在测试完成之前继续工作。

Jenkins 通过提供持续集成功能解决了该问题。合并新代码后,Jenkins 可以自动进行构建,运行测试和部署应用程序。
在这里插入图片描述
在这里插入图片描述
持续集成CI(Continuous integration)
在这里插入图片描述
CD Continuous Delivery

JSP Servlet

servlet和jsp的区别: https://www.cnblogs.com/zmwy/p/11428524.html
JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

**Servlet(Server Applet)**是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
在这里插入图片描述
1、Web浏览器发送HTTP请求到服务端,然后被Controller(Servlet)获取并进行处理(例如参数解析、请求转发)

2、Controller(Servlet)调用核心业务逻辑——Model部分,获得结果

3、Controller(Servlet)将逻辑处理结果交给View(JSP),动态输出HTML内容

4、动态生成的HTML内容返回到浏览器显示

MVC模式在Web开发中有很大的优势,它完美规避了JSP与Servlet各自的缺点,让Servlet只负责业务逻辑部分,而不会生成HTML代码;同时JSP中也不会充斥着大量的业务代码,这样能大提高了代码的可读性和可维护性。

JSP和Servlet都有自身的适用环境,那么有没有什么办法能够让它们发挥各自的优势呢?答案是肯有的,MVC模式就能够完美解决这一问题。

MVC模式,是Model-View-Controller的简称,是软件工程中的一种软件架构模式,分为三个基本部分,分别是:模型(Model)、视图(View)和控制器(Controller):

Controller——负责转发请求,对请求进行处理

View——负责界面显示

Model——业务功能编写(例如算法实现)、数据库设计以及数据存取操作实现

在JSP/Servlet开发的软件系统中,这三个部分的描述如下所示:

Mstsc

Mstsc (Microsoft terminal services client)
创建与终端服务器或其他远程计算机的连接,编辑现有“远程桌面连接(.rdp)”配置文件,并将 Windows XP 连接,迁移到新的 .rdp 文件中。
Mstsc还有一种说法,Microsoft Telnet Screen Control ,即“微软远程桌面控制”。
在这里插入图片描述

RDP

本文介绍在终端服务器与终端服务器客户端之间通信所使用的远程桌面协议 (RDP)。 RDP 在 TCP 中进行封装和加密。
Linux远程控制Windows电脑(1)方法一:Linux上通过安装rdesktop控制Windows首先要介绍的一个工具是Rdesktop,它实现了RDP协议,允许我们在Linux系统上远程登录Windows系统。以深度系统为例,安装Rdesktop使用下面的命令。

MSTSC是什么意思?
MSTSC通常称为远程桌面连接 (RDC),是一项Microsoft技术,它是通过使用远程桌面服务 (RDS)或使用公司专有远程桌面协议的终端服务来实现的。可通过局域网或互联网允许本地电脑远程控制另一台电脑,RDC通常需要远程计算机启用RDS并打开。当本地计算机通过支持RDC的软件请求与远程计算机建立连接时,就会建立连接。

RDP和MSTSC是一样的吗?
如上所述,RDP是一种专有协议,它允许用户使用图形界面通过网络远程访问电脑以控制另一台电脑,用户通过使用RDP客户端软件来执行此操作。此外,微软现在将其官方RDP客户端软件称为RDC (MSTSC)。简而言之,RDP包含RDC (MSTSC),因此,RDP和MSTSC虽不是一回事,但它们是联系在一起的。

RDP是一种安全可靠的远程访问协议或技术标准,用于远程控制电脑,由Microsoft开发,可用作为ITU(国际电信联盟)一部分的标准协议T.120的扩展。它为用户提供了Windows 图形用户界面 (GUI)体验。

RDP 远程桌面软件用的是什么技术,什么原理

原理当然是计算机网络通信啊(TCP/IP)…最简单的实现是,如果你要控制一台远程电脑,你得先和远程电脑能进行联网通信,你的控制主机和远程电脑都需要安装一款你开发的软件。然后远程电脑不停地向你电脑发送他屏幕的截屏,这样就能屏幕共享了。再复杂点,你在你本地做一个操作,比如最简单的你点击共享的屏幕时,记录下坐标然后发送给远程电脑,远程电脑上的程序收到数据后,再执行相关的操作。这样就能实现远程控制了。类似的,文件共享,传输也是类似的。不同的远程桌面软件实现的原理都差不多,上层应用层的协议比如远程桌面windows使用的RDP,VNC就可以跨平台windows和linux,TV听说是他们自己定的应用层协议,下层的传输层协议就是TCP了。。。另外,还有一些非桌面的远程访问方法,像telnet,ssh…

在这里插入图片描述
简单点说,就是在一台电脑(远程终端)上操作和显示,而实际是在另一台电脑(宿主服务器)上运行程序。终端通过网络传送本地键盘鼠标操作,并接收合成后的画面。画面通常是在服务器CPU中虚拟一块显卡来合成,也有能借助物理显卡的技术(不常用)。

Grafana

Grafana 是一个开源的监控数据分析和可视化套件。最常用于对基础设施和应用数据分析的时间序列数据进行可视化分析,也可以用于其他需要数据可视化分析的领域。Grafana 可以帮助你查询、可视化、告警、分析你所在意的指标和数据。可以与整个团队共享,有助于培养团队的数据驱动文化。

在这里插入图片描述
在这里插入图片描述

不分层级和职位,分场景。神策主要用于埋点分析,适合互联网行业使用,对标产品是GrowingIO;帆软主要做报表,对标产品是润乾报表,值得一提的是润乾帆软产品功能差不多,但润乾的发展时间更长,价格也要便宜很多(1万一套);kibana和grafana主要用于时序数据库的BI可视化,常规数仓(OLAP)场景下使用Superset、润乾BI更多一些,这些产品都是开源的。

EFK

EFK是由ElasticSearch(es)、Filebeat和Kiabana三个开源工具组成:

1.ElasticSearch是一个基于Lucence的开源分布式搜索服务器,它的特点有:分布式、零配置、自动发现、索引自动分片、索引副本机制、restful风格接口、多数据源、自动搜索负载等,提供了一个分布式多用户能力的全文搜索引擎。

2.Filebeat 是基于原先 logstash-forwarder 的源码改造出来的,安装包10M左右。如果日志的量很大,Logstash 会遇到资源占用高的问题,为解决这个问题,这里采用Filebeat。Filebeat 用 Golang 编写,无需依赖 Java 环境,效率高,占用内存和 CPU 比较少,非常适合作为 Agent 跑在服务器上

3.Kiabana是一个基于浏览器页面的ElasticSearch前端展示工具,也是一个开源的工具,提供友好的web界面。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Startalk

Startalk(星语)——通用通信解决方案:https://blog.csdn.net/fanshisha/article/details/86690000

Startalk是世界上最好的开源im系统级解决方案
Startalk 的目标是成为一款通用的,高性能的企业级im套件。也在努力改变当前大型im系统无完整开源解决方案的现状。
Startalk 前身是去哪儿的Qtalk,已在Qunar稳定运行3年多。
其内核也在去哪儿旅行和去哪儿网站上扮演着着客服服务工具的角色。
也就是说,一套内核同时为去哪儿网提供了内部企业办公和商家tob业务的支撑。
我们的使用场景
办公自动化OA
商业企业客服系统
各种im场景的SDK级嵌入

eclipse

eclipse是什么:https://m.php.cn/article/414664.html
clipse是一个免费的、基于Java的可扩展开发平台,它允许开发人员开发和测试并用其他编程语言编写代码。eclispe提供了一个用于处理工具的通用用户界面模型,目的是运行在多个操作系统上。
对于学习java的人来说Eclipse并不陌生,它是一个开放源代码的、基于Java的可扩展开发平台,说到底它是可扩展软件开发应用程序框架,工具和运行时的开源平台。最初是作为基于Java的集成开发环境(IDE)创建的。
在这里插入图片描述

ProM

ProM(Process Mining framework)是一个流程挖掘算法的开源框架,是流程挖掘社区进行研究的开发框架平台,为开发者和用户提供一个易使用、易扩展的流程挖掘算法平台。开发者可以在ProM上贡献代码,ProM为用户提供这些公开的开发的工具(插件)的使用。
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值