当前位置: 首页 > news >正文

建设网站网站设计一个简单的登录界面网页代码

建设网站网站设计,一个简单的登录界面网页代码,wordpress简体中文下载,优化大师会员兑换码目录 1 Skywalking概述1.1 微服务系统监控三要素1.2 什么是链路追踪1.2.1 链路追踪1.2.2 OpenTracing1、数据模型#xff1a;2、核心接口语义 1.3 常见APM系统1.4 Skywalking介绍1、SkyWalking 核心功能#xff1a;2、SkyWalking 特点#xff1a;3、Skywalking架构图#x… 目录 1 Skywalking概述1.1 微服务系统监控三要素1.2 什么是链路追踪1.2.1 链路追踪1.2.2 OpenTracing1、数据模型2、核心接口语义 1.3 常见APM系统1.4 Skywalking介绍1、SkyWalking 核心功能2、SkyWalking 特点3、Skywalking架构图 2 Skywalking安装2.1 elasticsearch安装2.2 Skywalking安装2.3 Skywalking生产环境问题2.4 docker-compose部署 1 Skywalking概述 随着互联网架构的扩张分布式系统变得日趋复杂越来越多的组件开始走向分布式化如微服务、消息收发、分布式数据库、分布式缓存、分布式对象存储、跨域调用这些组件共同构成了繁杂的分布式网络。 我们思考下这些问题 1:一个请求经过了这些服务后其中出现了一个调用失败的问题如何定位问题发生的地方 2:如何计算每个节点访问流量 3:流量波动的时候增加哪些节点集群服务这些问题要想得到解决一定是有数据支撑绝不是靠开发人员或者运维人员的直觉。为了解决分布式应用、微服务系统面临的这些挑战APM系统营运而生。 1.1 微服务系统监控三要素 Logging 就是记录系统行为的离散事件例如服务在处理某个请求时打印的错误日志我们可以将这些日志信息记录到 ElasticSearch 或是其他存储中然后通过 Kibana 或是其他工具来分析这些日志了解服务的行为和状态。大多数情况下日志记录的数据很分散并且相互独立比如错误日志、请求处理过程中关键步骤的日志等等。Metrics 是系统在一段时间内某一方面的某个度量可聚合的数据且通常是固定类型的时序数据例如电商系统在一分钟内的请求次数。我们常见的监控系统中记录的数据都属于这个范畴例如 Promethus、Open-Falcon 等这些监控系统最终给运维人员展示的是一张张二维的折线图。Metrics 是可以聚合的例如为电商系统中每个 HTTP 接口添加一个计数器计算每个接口的 QPS之后我们就可以通过简单的加和计算得到系统的总负载情况。Tracing 即我们常说的分布式链路追踪记录单个请求的处理流程其中包括服务调用和处理时长等信息。在微服务架构系统中一个请求会经过很多服务处理调用链路会非常长要确定中间哪个服务出现异常是非常麻烦的一件事。通过分布式链路追踪运维人员就可以构建一个请求的视图这个视图上展示了一个请求从进入系统开始到返回响应的整个流程。这样就可以从中了解到所有服务的异常情况、网络调用以及系统的性能瓶颈等。 1.2 什么是链路追踪 谷歌在 2010 年 4 月发表了一篇论文《Dapper, a Large-Scale Distributed Systems Tracing Infrastructure》介绍了分布式追踪的概念之后很多互联网公司都开始根据这篇论文打造自己的分布式链路追踪系统。APM 系统的核心技术就是分布式链路追踪。 论文在线地址https://storage.googleapis.com/pub-tools-public-publication-data/pdf/36356.pdf 国内的翻译版https://bigbully.github.io/Dapper-translation/ 在此文中阐述了Google在生产环境下对于分布式链路追踪系统Drapper的设计思路与使用经验。随后各大厂商基于这篇论文都开始自研自家的分布式链路追踪产品。如阿里的Eagle eye(鹰眼)、zipkin京东的“Hydra”、大众点评的“CAT”、新浪的“Watchman”、唯品会的“Microscope”、窝窝网的“Tracing”都是基于这片文章的设计思路而实现的。所以要学习分布式链路追踪对于Dapper论文的理解至关重要。 但是也带来了新的问题各家的分布式追踪方案是互不兼容的这才诞生了 OpenTracing。 OpenTracing 是一个 Library定义了一套通用的数据上报接口要求各个分布式追踪系统都来实现这套接口。这样一来应用程序只需要对接 OpenTracing而无需关心后端采用的到底什么分布式追踪系统因此开发者可以无缝切换分布式追踪系统也使得在通用代码库增加对分布式追踪的支持成为可能。 OpenTracing 于 2016 年 10 月加入 CNCF 基金会是继 Kubernetes 和 Prometheus 之后第三个加入CNCF 的开源项目。它是一个中立的厂商无关、平台无关分布式追踪的 API 规范提供统一接口可方便开发者在自己的服务中集成一种或多种分布式追踪的实现。 OpenTracing API 目前支持的语言众多 目前主流的分布式追踪实现基本都已经支持 OpenTracing。 1.2.1 链路追踪 下面通过官方的一个示例简单介绍说明什么是 Tracing,把Tracing学完后更有助于大家运用Skywalking UI进行数据分析。 在一个分布式系统中追踪一个事务或者调用流程可以用下图方式描绘出来。这类流程图可以看清各组件的组合关系但它并不能看出一次调用触发了哪个组件调用、什么时间调用、是串行调用还是并行调用。 一种更有效的展现方式就是下图这样这是一个典型的 trace 视图这种展现方式增加显示了执行时间的上下文相关服务间的层次关系进程或者任务的串行或并行调用关系。这样的视图有助于发现系统调用的关键路径。通过关注关键路径的执行过程开发团队就可以专注于优化路径中的关键服务最大幅度的提升系统性能。例如下图中我们可以看到请求串行的调用了授权服务、订单服务以及资源服务在资源服务中又并行的执行了三个子任务。我们还可以看到在这整个请求的生命周期中资源服务耗时是最长的。 分布式追踪系统的原理 分布式追踪系统大体分为三个部分数据采集、数据持久化、数据展示。数据采集是指在代码中埋点设置请求中要上报的阶段以及设置当前记录的阶段隶属于哪个上级阶段。数据持久化则是指将上报的数据落盘存储数据展示则是前端查询与之关联的请求阶段并在界面上呈现。 上图是一个请求的流程例子请求从客户端发出到达负载均衡再依次进行认证、计费最后取到目标资源。请求过程被采集之后会以上图的形式呈现横坐标是时间圆角矩形是请求的执行的各个阶段 1.2.2 OpenTracing 学好OpenTracing更有助于我们运用Skywalking 。 1、数据模型 这部分在 OpenTracing 的规范中写的非常清楚下面只大概翻译一下其中的关键部分细节可参考原始文档 《The OpenTracing Semantic Specification》。 Causal relationships between Spans in a single Trace 解释了Trace 和 Span的因果关系[Span A] ←←←(the root span)|------------| |[Span B] [Span C] ←←←(Span C is a ChildOf Span A)| |[Span D] ----------| |[Span E] [Span F] [Span G] [Span H]↑↑↑(Span G FollowsFrom Span F)Trace 一个 Trace 代表一个事务、请求或是流程在分布式系统中的执行过程。OpenTracing 中的一条 Trace调用链由多个 Span 组成一个 Span 代表系统中具有开始时间和执行时长的逻辑单元Span 一般会有一个名称一条 Trace 中 Span 是首尾连接的。 Span Span 代表系统中具有开始时间和执行时长的逻辑单元Span 之间通过嵌套或者顺序排列建立逻辑因果关系。 如果按时间关系呈现的话如下所示 ––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|–––––––|– time[Span A···················································][Span B··············································][Span D··········································][Span C········································][Span E·······] [Span F··] [Span G··] [Span H··] 1234567每个 Span 中可以包含以下的信息 操作名称例如访问的具体 RPC 服务访问的 URL 地址等起始时间2021-1-25 22:00:00结束时间2021-1-30 22:00:00Span Tag一组键值对k-v构成的Span标签集合其中键必须为字符串类型值可以是字符串、bool 值或者数字Span Log一组 Span 的日志集合SpanContextTrace 的全局上下文信息ReferencesSpan 之间的引用关系下面详细说明 Span 之间的引用关系 在一个 Trace 中一个 Span 可以和一个或者多个 Span 间存在因果关系。目前OpenTracing 定义了 ChildOf 和 FollowsFrom 两种 Span 之间的引用关系。这两种引用类型代表了子节点和父节点间的直接因果关系。 ChildOf 关系一个 Span 可能是一个父级 Span 的孩子即为 ChildOf 关系。下面这些情况会构成 ChildOf 关系 一个 HTTP 请求之中被调用的服务端产生的 Span与发起调用的客户端产生的 Span就构成了 ChildOf 关系一个 SQL Insert 操作的 Span和 ORM 的 save 方法的 Span 构成 ChildOf 关系。 很明显上述 ChildOf 关系中的父级 Span 都要等待子 Span 的返回子 Span 的执行时间影响了其所在父级 Span 的执行时间父级 Span 依赖子 Span 的执行结果。除了串行的任务之外我们的逻辑中还有很多并行的任务它们对应的 Span 也是并行的这种情况下一个父级 Span 可以合并所有子 Span 的执行结果并等待所有并行子 Span 结束。 FollowsFrom 关系表示跟随关系意为在某个阶段之后发生了另一个阶段用来描述顺序执行关系 Logs 每个 Span 可以进行多次 Logs 操作每一次 Logs 操作都需要带一个时间戳以及一个可选的附加信息。 Tags 每个 Span 可以有多个键值对形式的 TagsTags 是没有时间戳的只是为 Span 添加一些简单解释和补充信息。 SpanContext 和 Baggage SpanContext 表示进程边界在跨进调用时需要将一些全局信息例如TraceId、当前 SpanId 等信息封装到 Baggage 中传递到另一个进程下游系统中。 Baggage 是存储在 SpanContext 中的一个键值对集合。它会在一条 Trace 中全局传输该 Trace 中的所有 Span 都可以获取到其中的信息。 需要注意的是由于 Baggage 需要跨进程全局传输就会涉及相关数据的序列化和反序列化操作如果在 Baggage 中存放过多的数据就会导致序列化和反序列化操作耗时变长使整个系统的 RPC 的延迟增加、吞吐量下降。 虽然 Baggage 与 Span Tags 一样都是键值对集合但两者最大区别在于 Span Tags 中的信息不会跨进程传输而 Baggage 需要全局传输。因此OpenTracing 要求实现提供 Inject 和 Extract 两种操作SpanContext 可以通过 Inject 操作向 Baggage 中添加键值对数据通过 Extract 从 Baggage 中获取键值对数据。 2、核心接口语义 OpenTracing 希望各个实现平台能够根据上述的核心概念来建模实现不仅如此OpenTracing 还提供了核心接口的描述帮助开发人员更好的实现 OpenTracing 规范。 Span 接口 Span接口必须实现以下的功能 获取关联的 SpanContext通过 Span 获取关联的 SpanContext 对象。关闭FinishSpan完成已经开始的 Span。添加 Span Tag为 Span 添加 Tag 键值对。**添加 Log**为 Span 增加一个 Log 事件。**添加 Baggage Item**向 Baggage 中添加一组键值对。**获取 Baggage Item**根据 Key 获取 Baggage 中的元素。 SpanContext 接口 SpanContext 接口必须实现以下功能用户可以通过 Span 实例或者 Tracer 的 Extract 能力获取 SpanContext 接口实例。 Tracer 接口 Tracer 接口必须实现以下功能 **创建 Span**创建新的 Span。 注入 SpanContext主要是将跨进程调用携带的 Baggage 数据记录到当前 SpanContext 中。 提取 SpanContext 主要是将当前 SpanContext 中的全局信息提取出来封装成 Baggage 用于后续的跨进程调用。 1.3 常见APM系统 我们前面提到了APM系统APM 系统Application Performance Management即应用性能管理是对企业的应用系统进行实时监控实现对应用性能管理和故障定位的系统化解决方案在运维中常用。 CAT开源 由国内美团点评开源的基于 Java 语言开发目前提供 Java、C/C、Node.js、Python、Go 等语言的客户端监控数据会全量统计。国内很多公司在用例如美团点评、携程、拼多多等。CAT 需要开发人员手动在应用程序中埋点对代码侵入性比较强。Zipkin开源 由 Twitter 公司开发并开源Java 语言实现。侵入性相对于 CAT 要低一点需要对web.xml 等相关配置文件进行修改但依然对系统有一定的侵入性。Zipkin 可以轻松与 Spring Cloud 进行集成也是 Spring Cloud 推荐的 APM 系统。Pinpoint开源 韩国团队开源的 APM 产品运用了字节码增强技术只需要在启动时添加启动参数即可实现 APM 功能对代码无侵入。目前支持 Java 和 PHP 语言底层采用 HBase 来存储数据探针收集的数据粒度非常细但性能损耗较大因其出现的时间较长完成度也很高文档也较为丰富应用的公司较多。SkyWalking开源 国人开源的产品2019 年 4 月 17 日 SkyWalking 从 Apache 基金会的孵化器毕业成为顶级项目。目前 SkyWalking 支持 Java、.Net、Node.js 等探针数据存储支持MySQL、ElasticSearch等。还有很多不开源的 APM 系统例如淘宝鹰眼、Google Dapper 等等。 我们将学习SkywalkingSkywalking有很多优秀特性。SkyWalking 对业务代码无侵入性能表现优秀SkyWalking 增长势头强劲社区活跃中文文档齐全支持多语言探针 SkyWalking 支持Dubbo、gRPC、SOFARPC 等很多框架。 1.4 Skywalking介绍 2015年由个人吴晟华为开发者主导开源作者是华为开发云监控产品经理主导监控产品的规划、技术路线及相关研发工作也是OpenTracing分布式追踪标准组织成员 该项目 2017年加入Apache孵化器是一个分布式系统的应用程序性能监控工具APM专为微服务、云原生架构和基于容器Docker、K8s、Mesos架构而设计。 官方站点http://skywalking.apache.org/ GitHub项目地址https://github.com/apache/skywalking Skywalking是一个可观测性分析平台和应用性能管理系统它也是基于OpenTracing规范、开源的AMP系统。Skywalking提供分布式跟踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。支持Java .Net Core, PHP, NodeJS, Golang, LUA, c代理。支持Istio 特使服务网格 我们在学习Skywalking之前可以先访问官方提供的控制台演示 演示地址http://demo.skywalking.apache.org/ 账号skywalking 密码skywalking 1、SkyWalking 核心功能 指标分析服务实例端点指标分析 问题分析在运行时分析代码找到问题的根本原因 服务拓扑提供服务的拓扑图分析 依赖分析服务实例和端点依赖性分析 服务检测检测慢速的服务和端点 性能优化根据服务监控的结果提供性能优化的思路 链路追踪分布式跟踪和上下文传播 数据库监控数据库访问指标监控统计检测慢速数据库访问语句包括SQL语句 服务告警服务告警功能 名词解释 服务service业务资源应用系统端点endpoint应用系统对外暴露的功能接口实例instance物理机 2、SkyWalking 特点 多语言自动探针支持 Java、.NET Code 等多种语言。为多种开源项目提供了插件为 Tomcat、 HttpClient、Spring、RabbitMQ、MySQL 等常见基础设施和组件提供了自动探针。微内核 插件的架构存储、集群管理、使用插件集合都可以进行自由选择。支持告警。优秀的可视化效果。 3、Skywalking架构图 skyWalking整体可分为客户端服务端 客户端agent组件 基于探针技术采集服务相关信息包括跟踪数据和统计数据然后将采集到的数据上报给skywalking的数据收集器 服务端又分为OAPStorageWebUI OAPobservability analysis platform可观测性分析平台负责接收客户端上报的数据对数据进行分析聚合计算后将数据进行存储并且还会提供一些查询API进行数据的查询这个模块其实就是我们所说的链路追踪系统的Collector收集器StorageskyWalking的存储介质默认是采用H2同时支持许多其他的存储介质比如ElastaticSearchmysql等WebUI提供一些图形化界面展示对应的跟踪数据指标数据等等 2 Skywalking安装 Skywalking数据存储方式有2种分别为H2(内存)和elasticsearch如果数据量比较大建议使用后者工作中也建议使用后者。 Skywalking自身提供了UI管理控制台我们安装的组件 1:elasticsearch,建议使用elasticsearch7.x 2:elasticsearch-hq,elasticsearch的管理工具更方便管理elasticsearch 3:Skywalking 4:Skywalking-UI2.1 elasticsearch安装 1)系统资源配置修改 elasticsearch占用系统资源比较大我们需要修改下系统资源配置这样才能很好的运行elasticsearch修改虚拟机配置vi /etc/security/limits.conf 追加内容: * soft nofile 65536 * hard nofile 65536修改vi /etc/sysctl.conf追加内容 : vm.max_map_count655360让配置立即生效 /sbin/sysctl -p2)安装elasticsearch 建议安装elasticsearch7.x我们这里选择7.6.2,并且采用容器的安装方式安装如下 docker run --name elasticsearch -p 9200:9200 -p 9300:9300 --restartalways -e discovery.typesingle-node -e ES_JAVA_OPTS-Xms84m -Xmx512m -d elasticsearch:7.6.23)elasticsearch跨域配置 elasticsearch默认是没有开启跨域我们需要配置跨域并配置集群节点名字 #进入容器 docker exec -it elasticsearch /bin/bash修改容器中/usr/share/elasticsearch/config/elasticsearch.yml文件添加配置如下 cluster.name: elasticsearch http.cors.enabled: true http.cors.allow-origin: * network.host: 0.0.0.0 discovery.zen.minimum_master_nodes: 1参数说明 cluster.name:集群服务名字 http.cors.enabled:开启跨域 http.cors.allow-origin: 允许跨域域名*代表所有域名 network.host: 外部访问的IP discovery.zen.minimum_master_nodes: 最小主节点个数 12345安装完成后重启容器docker restart elasticsearch再访问http://192.168.200.129:9200/效果如下 安装 ElasticSearch管理界面elasticsearch-hq docker run -d --name elastic-hq -p 5000:5000 --restart always elastichq/elasticsearch-hq 1安装完成后访问控制台地址 http://192.168.200.129:5000/#!/clusters/elasticsearch 2.2 Skywalking安装 Skywalking的安装我们也采用Docker安装方式同时我们需要为Skywalking指定存储服务 #安装Skywalking docker run --name skywalking -d -p 1234:1234 -p 11800:11800 -p 12800:12800 --restart always --link elasticsearch:elasticsearch -e SW_STORAGEelasticsearch7 -e SW_STORAGE_ES_CLUSTER_NODESelasticsearch:9200 apache/skywalking-oap-server 12参数说明 --link elasticsearch:elasticsearch:存储服务使用elasticsearch -e SW_STORAGEelasticsearch7存储服务elasticsearch的版本 -e SW_STORAGE_ES_CLUSTER_NODESelasticsearch:9200:存储服务elasticsearch的链接地址 123接下来安装Skywalking-UI需要指定Skywalking服务名字 docker run --name skywalking-ui -d -p 8080:8080 --link skywalking:skywalking -e SW_OAP_ADDRESSskywalking:12800 --restart always apache/skywalking-ui 1安装完成后我们接下来访问Skywalking控制台http://192.168.200.129:8080 关于SkywalkingUI的使用我们在下一节知识点详细讲解。 2.3 Skywalking生产环境问题 1)ES分片数量上限 如果此时访问http://192.168.200.129:8080/ 出现500错误错误如下此时其实是Elasticsearch出了问题 com.netflix.zuul.exception.ZuulException,message:GENERAL 1我们可以查看skywalking的日志docker logs --since 30m skywalking会报如下错误 Failed: 1: this action would add [2] total shards, but this cluster currently has [1000]/[1000] maximum shards open;] 1这种错误一般是生产环境中Elasticsearch分片数量达到了峰值es集群的默认最大分片数是1000我们需要调整Elasticsearch的默认分片数量修改方式有多种最常用的是直接修改elasticsearch.yml配置文件 #进入elasticsearch容器 docker exec -it elasticsearch /bin/bash #编辑 vi /usr/share/elasticsearch/config/elasticsearch.yml #添加如下配置 cluster.max_shards_per_node: 10000000 123456保存配置后记得删除data/nodes数据包再重启elasticsearch此时就可以正常访问了。 2)磁盘清理 如果此时能打开skywalking-ui界面但是没有数据则需要清理磁盘空间可能是磁盘空间满了如果是docker容器可以使用docker system prune命令实现清理docker system prune命令可以用于清理磁盘删除关闭的容器、无用的数据卷和网络以及dangling镜像即无tag的镜像。docker system prune -a命令清理得更加彻底可以将没有容器使用Docker镜像都删掉。 2.4 docker-compose部署 创建docker-compose.yml并配置如下 version: 3.3 services:elasticsearch:image: elasticsearch:7.6.2container_name: elasticsearchrestart: alwaysprivileged: truehostname: elasticsearchports:- 9200:9200- 9300:9300environment:- discovery.typesingle-node- bootstrap.memory_locktrue- ES_JAVA_OPTS-Xms512m -Xmx512m- TZAsia/Shanghainetworks:- skywalkingulimits:memlock:soft: -1hard: -1elasticsearch-hq:image: elastichq/elasticsearch-hqcontainer_name: elasticsearch-hqrestart: alwaysprivileged: truehostname: elasticsearch-hqports:- 5000:5000environment:- TZAsia/Shanghainetworks:- skywalkingoap:image: apache/skywalking-oap-server:8.3.0-es7container_name: oaphostname: oapprivileged: truedepends_on:- elasticsearchlinks:- elasticsearchrestart: alwaysports:- 11800:11800- 12800:12800environment:SW_STORAGE: elasticsearch7SW_STORAGE_ES_CLUSTER_NODES: elasticsearch:9200TZ: Asia/Shanghaivolumes:- ./config/alarm-settings.yml:/skywalking/config/alarm-settings.ymlnetworks:- skywalkingui:image: apache/skywalking-ui:8.3.0container_name: uiprivileged: truedepends_on:- oaplinks:- oaprestart: alwaysports:- 8080:8080environment:SW_OAP_ADDRESS: oap:12800TZ: Asia/Shanghainetworks:- skywalkingnetworks:skywalking:driver: bridge通过命令一键启动 docker-compose up -d启动成功后访问skywalking的webui页面http://192.168.200.129:8080/
http://www.sczhlp.com/news/180656/

相关文章:

  • 河北省建设银行网站首页兴宁电子商务网站建设
  • 怎样申请做自己的网站简述网站建设的流程做成一个页面
  • 网站怎么维护更新用手机制作word文档的app
  • 成都哪家做网站比较好网站建设哪里
  • 自学做网站多久广州网络推广定制
  • 为什么有网网站打不开怎么回事啊用wordpress做企业网站视频教程
  • 自己服务器做网站服务器备案wordpress on.7主题
  • 做网站的时候遇到的问题google play三件套
  • 一个网站价格asp故障解答网站模板
  • 秦淮做网站价格苏州园科生态建设集团网站
  • 网站模板织梦免费上饶网站建设公司
  • wordpress美化背景杭州网络推广网络优化
  • 网站备案是否收费标准东莞58同城广告推广公司
  • 网站开发难度陕西专业网站开发公司
  • 视觉网站建设hdsyscms企业建站系统
  • 怎么创建自己的博客网站交换链接的其它叫法是
  • 制作网站建设拓扑图软件网站建设奖项
  • wordpress仿站教程百度云wordpress 采集站
  • 有哪些网站做外贸的做网站UI说不会写文案
  • 手机网站建设机构网站开发定义名称
  • 新颖的网站策划人才招聘网最新招聘2023
  • 可以免费注册的网站海外销售是做什么的
  • 网站开发用什么语言贷款 东莞网站建设
  • 南京市雨花区建设局网站外链代发2分一条
  • 贵阳建筑公司网站建设房产信息网二手房
  • 织梦系统网站首页upcache=1新冠咳嗽怎么办
  • 网站开发技术 创新点邯郸医疗网站建设
  • 盐城做企业网站公司团购网站设计
  • 北京网站建站模板南京网站开发联系南京乐识
  • c2c网站都有哪些wordpress 上传目录