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

长沙旅游网站制作市场调研报告500字

长沙旅游网站制作,市场调研报告500字,许昌网站开发公司,南通建设公司网站概述 微服务调用存在的问题 串联调用链路#xff0c;快速定位问题#xff1b;理清服务之间的依赖关系#xff1b;微服务接口性能分析#xff1b;业务流程调用处理顺序#xff1b; 全链路追踪#xff1a;对请求源头到底层服务的调用链路中间的所有环节进行监控。 链路…概述 微服务调用存在的问题 串联调用链路快速定位问题理清服务之间的依赖关系微服务接口性能分析业务流程调用处理顺序 全链路追踪对请求源头到底层服务的调用链路中间的所有环节进行监控。 链路追踪组件选型 OpenTracing语义规范 https://github.com/opentracing/specification/blob/master/specification.md 组件对比 ZipkinPinpointSkyWalkingCAT贡献者Twitter开源韩国人开源华为吴晟开源大众点评开源实现方式拦截请求发送 http/mq 数据到 zipkin 服务字节码注入字节码注入代理埋点拦截器、注解、过滤器接入方式基于 linkerd/sleuth引入配置即可javaagent 字节码javaagent 字节码代码侵入agent 到 collector 传输协议http、MQthriftgRPChttp/tcpOpenTracing支持支持粒度接口级方法级方法级代码级全局调用统计支持支持支持traceid 查询支持支持告警支持支持支持JVM 监控支持支持支持 探针性能对比模拟了三种并发用户5007501000。使用 jmeter 测试每个线程发送 30 个请求设置思考时间为 10ms。使用的采样率为 1 即 100%这边与生产可能有差别。pinpoint 默认的采样率为 20即 50%通过设置 agent 的配置文件改为 100%。zipkin 默认也是 1。组合起来一共有 12 种。下面看下汇总表从上表可以看出在三种链路监控组件中skywalking 的探针对吞吐量的影响最小zipkin 的吞吐量居中。pinpoint 的探针对吞吐量的影响较为明显在 500 并发用户时测试服务的吞吐量从 1385 降低到 774影响很大。然后再看下 CPU 和 memory 的影响在内部服务器进行的压测对 CPU 和 memory 的影响都差不多在 10% 之内。 SkyWalking 是什么 skywalking 是一个国产开源框架2015 年由吴晟开源 2017 年加入 Apache 孵化器。skywalking 是分布式系统的应用程序性能监视工具专为微服务、云原生架构和基于容器Docker、K8s、Mesos架构而设计。SkyWalking 是观察性分析平台和应用性能管理系统提供分布式追踪、服务网格遥测分析、度量聚合和可视化一体化解决方案。 官网http://skywalking.apache.org/ 下载http://skywalking.apache.org/downloads/ Githubhttps://github.com/apache/skywalking 文档https://skywalking.apache.org/docs/main/v9.1.0/readme/ 中文文档 https://skyapm.github.io/document-cn-translation-of-skywalking/ 版本v9.1.0 实现思路采集数据》传输数据》存储数据》分析数据》监控报警。 SkyWalking 主要功能特性 多种监控手段可以通过语言探针和 service mesh 获得监控的数据支持多种语言自动探针包括 Java.NET Core 和 Node.JS轻量高效无需大数据平台和大量的服务器资源模块化UI、存储、集群管理都有多种机制可选支持告警优秀的可视化解决方案 SkyWalking 整体架构 整个架构分成四部分 上部分 Agent 负责从应用中收集链路信息发送给 SkyWalking OAP 服务器 下部分 SkyWalking OAP 负责接收 Agent 发送的 Tracing 数据信息然后进行分析(Analysis Core)存储到外部存储器(Storage)最终提供查询(Query)功能 右部分 Storage Tracing 数据存储目前支持 ES、MySQL、Sharding Sphere、TiDB、H2 多种存储器目前采用较多的是 ES主要考虑是 SkyWalking 开发团队自己的生产环境采用 ES 为主 左部分 SkyWalking UI 负责提供控制台查看链路等等 SkyWalking 支持三种探针 Agent 基于 ByteBuddy 字节码增强技术实现通过 jvm 的 agent 参数加载并在程序启动时拦截指定的方法来收集数据。 SDK 程序中显式调用 SkyWalking 提供的 SDK 来收集数据对应用有侵入。 Service Mesh 通过 Service mesh 的网络代理来收集数据。 后端Backend接受探针发送过来的数据进行度量分析调用链分析和存储。后端主要分为两部分 OAPObservability Analysis Platform 进行度量分析和调用链分析的后端平台并支持将数据存储到各种数据库中如ElasticSearchMySQLInfluxDB等。 OALObservability Analysis Language 用来进行度量分析的 DSL类似于 SQL用于查询度量分析结果和警报。 界面(UI) RocketBot UI SkyWalking 7.0.0 的默认 web UI CLI 命令行界面 这四个模块的交互流程 SkyWalking 环境搭建部署 说明 skywalking agent 和业务系统绑定在一起负责收集各种监控数据。Skywalking oapservice 是负责处理监控数据的比如接受 skywalking agent 的监控数据并存储在数据库中。接受 skywalking webapp 的前端请求从数据库查询数据并返回数据给前端。Skywalking oapservice 通常以集群的形式存在。skywalking webapp前端界面用于展示数据。用于存储监控数据的数据库比如 mysql、elasticsearch 等。 下载 SkyWalking 下载http://skywalking.apache.org/downloads/ 下载上图箭头所示SkyWalking APM 包括 oap 和 uiJava Agent 表示应用需要接入的 agent。下载链接 # SkyWalking APM: v9.1.0 wget https://archive.apache.org/dist/skywalking/9.1.0/apache-skywalking-apm-9.1.0.tar.gz# Java Agent: v8.11.0 wget https://archive.apache.org/dist/skywalking/java-agent/8.11.0/apache-skywalking-java-agent-8.11.0.tgz目录说明apm webapp UI 前端web 监控页面的 jar 包和配置文件 oap-libs 后台应用的 jar 包以及它的依赖 jar 包里边有一个 server-starter-*jar 就是启动程序 config 启动后台应用程序的配置文件是使用的各种配置 bin 各种启动脚本一般使用脚本 startup.* 来启动 web 页面和对应的后台应用oapService.默认使用的后台程序的启动脚本使用的是默认模式启动还支持其他模式各模式区别见启动模式oapServicelnit.使用 init 模式启动在此模式下OAP 服务器启动以执行初始化工作然后退出oapServiceNolnit.使用 no init 模式启动在此模式下OAP 服务器不进行初始化webappService.UI 前端的启动脚本startup.组合脚本同时启动 oapService.、webappService.* 脚本 agent skywalking-agent.jar 代理服务 jar 包。 config 代理服务启动时使用的配置文件。 plugins 包含多个插件代理服务启动时会加载改目录下的所有插件实际是各种jar包。 optional-plugins 可选插件当需要支持某种功能时比如 SpringCloud Gateway则需要把对应的 jar 包拷贝到 plugins 目录下。 搭建 SkyWalking OAP 服务1先使用默认的 H2 数据库存储不用修改配置 vim config/application.yml2启动脚本 bin/startup.sh日志信息存储在 logs 目录启动成功后会启动两个服务一个是 skywalking-oap-server一个是 skywalking-web-ui启动日志在 logs/skywalking-oap-server.log。skywalking-oap-server 服务启动后会暴露 11800 和 12800 两个端口分别为收集监控数据的端口 11800 和接受前端请求的端口 12800修改端口可以修改config/applicaiton.yml。skywalking-web-ui 服务会占用 8080 端口修改端口可以修改 webapp/webapp.yml。 server.portSkyWalking UI 服务端口默认是8080 spring.cloud.discovery.client.simple.instances.oap-serviceSkyWalking OAP 服务地址数组SkyWalking UI 界面的数据是通过请求 SkyWalking OAP 服务来获得 http://xxx:8080 SkyWalking 中三个概念 服务(Service) 表示对请求提供相同行为的一系列或一组工作负载在使用 Agent 时可以定义服务的名字服务实例(Service Instance) 上述的一组工作负载中的每一个工作负载称为一个实例一个服务实例实际就是操作系统上的一个真实进程端点(Endpoint) 对于特定服务所接收的请求路径如 HTTP 的 URI 路径和 gRPC 服务的类名 方法签名 SkyWalking 快速开始 SkyWalking Agent 追踪微服务 通过 jar 包方式接入 准备一个 springboot 程序打成可执行 jar 包写一个 shell 脚本在启动项目的 Shell 脚本上通过 -javaagent 参数进行配置 SkyWalking Agent 来追踪微服务。startup.sh 脚本 #!/bin/sh # SkyWalking Agent配置 export SW_AGENT_NAMEspringboot-skywalking-demo # Agent名字一般使用spring.application.name export SW_AGENT_COLLECTOR_BACKEND_SERVICES127.0.0.1:11800 # 配置 Collector 地址 export SW_AGENT_SPAN_LIMIT2000 # 配置链路的最大 Span 数量默认为 300 export JAVA_AGENT-javaagent:/root/skywalking-agent/skywalking-agent.jar java $JAVA_AGENT -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar # jar启动等同于 java -javaagent:/root/skywalking-agent/skywalking-agent.jar -DSW_AGENT_COLLECTOR_BACKEND_SERVICES127.0.0.1:11800 -DSW_AGENT_NAMEspringboot-skywalking-demo -jar springboot-skywalking-demo-0.0.1-SNAPSHOT.jar参数名对应 agent/config/agent.config 配置文件中的属性。属性对应的源码org.apache.skywalking.apm.agent.core.conf.Config.java。 # The service name in UI agent.service_name${SW_AGENT_NAME:Your_ApplicationName} # Backend service addresses. collector.backend_service${SW_AGENT_COLLECTOR_BACKEND_SERVICES:127.0.0.1:11800}我们也可以使用 skywalking.配置文件中的配置名 作为系统配置项来进行覆盖。 javaagent 参数配置方式优先级更高 -javaagent:/root/skywalking-agent/skywalking-agent.jar -Dskywalking.agent.service_namespringboot-skywalking-demo -Dskywalking.collector.backend_service127.0.0.1:11800在 IDEA 中使用 SkyWalking 在运行的程序配置 jvm 参数 -javaagent:D:\apache\apache-skywalking-java-agent-8.11.0\skywalking-agent\skywalking-agent.jar -DSW_AGENT_NAMEspringboot-skywalking-demo -DSW_AGENT_COLLECTOR_BACKEND_SERVICES192.168.65.206:11800 SkyWalking 跨多个微服务追踪 Skywalking 跨多个微服务追踪只需要每个微服务启动时添加 javaagent 参数即可。启动微服务 gateway-serviceorder-serviceuser-service 配置 skywalking 的 jvm 参数。 解决追踪链路不显示 gateway拷贝 agent/optional-plugins 目录下的 gateway 插件和 webflux 插件到agent/plugins目录 SkyWalking 集成日志框架 https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/ 引入依赖 !-- apm-toolkit-logback-1.x -- dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-logback-1.x/artifactIdversion8.11.0/version /dependency微服务添加 logback-spring.xml 文件并配置 %tid 占位符 ?xml version1.0 encodingUTF-8? configurationappender nameconsole classch.qos.logback.core.ConsoleAppender!-- 日志的格式化 --encoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder/appender!-- 设置 Appender --root levelINFOappender-ref refconsole//root/configurationSkywalking 通过 grpc 上报日志需要v8.4.0以上gRPC 报告程序可以将收集到的日志转发到 SkyWalking OAP 服务器上。logback-spring.xml 中添加 !-- https://skywalking.apache.org/docs/skywalking-java/latest/en/setup/service-agent/java-agent/application-toolkit-logback-1.x/ --!-- 通过grpc上报日志到skywalking oap-- appender namegrpc-log classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.log.GRPCLogClientAppenderencoder classch.qos.logback.core.encoder.LayoutWrappingEncoderlayout classorg.apache.skywalking.apm.toolkit.log.logback.v1.x.TraceIdPatternLogbackLayoutPattern%d{yyyy-MM-dd HH:mm:ss.SSS} [%tid] [%thread] %-5level %logger{36} -%msg%n/Pattern/layout/encoder /appenderSkywalking UI 效果 SkyWalking 告警通知 skywalking 告警的核心由一组规则驱动这些规则定义在config/alarm-settings.yml文件中告警规则的定义分为三部分 告警规则它们定义了应该如何触发度量警报应该考虑什么条件网络钩子Webhook当警告触发时哪些服务终端需要被通知gRPC 钩子远程 gRPC 方法的主机和端口告警触发后调用 为了方便skywalking 发行版中提供了默认的alarm-setting.yml文件包括一些规则每个规则有英文注释可以根据注释得知每个规则的作用 在最近10分钟的3分钟内服务平均响应时间超过1000ms最近10分钟内服务成功率在2分钟内低于80%服务实例的响应时间在过去10分钟的2分钟内超过1000ms数据库访问{name}的响应时间在过去10分钟的2分钟内超过1000ms 只要我们的服务请求符合alarm-setting.yml文件中的某一条规则就会触发告警。比如 service_resp_time_rule 规则该规则表示服务{name}的响应时间在最近10分钟的3分钟内超过1000ms metrics-name度量名称也是 OAL 脚本中的度量名。默认配置中可以用于告警的度量有服务实例端点服务关系实例关系端点关系。它只支持longdouble和int类型。op操作符。threshold阈值。period多久告警规则需要被检查一下。这是一个时间窗口与后端部署环境时间相匹配。count在一个周期窗口中如果按 op 计算超过阈值的次数达到 count则发送告警。silence-period在时间 N 中触发报警后在 N - N silence-period 这段时间内不告警。message该规则触发时发送的通知消息。 测试编写接口模拟慢查询 RequestMapping(/info/{id}) public User info(PathVariable(id) Integer id){try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}return userService.getById(id); }访问接口过段时间会在 skywalking 控制界面出现了告警信息实现回调接口 RequestMapping(/notify) public String notify(RequestBody Object obj){// TODO 告警信息给技术负责人发短信钉钉消息邮件微信通知等System.err.println(obj.toString());return notify successfully; }在config/alarm-settings.yml中配置回调接口并重启 skywalking 服务测试访问[http://localhost:8000/user/info/1](http://localhost:8000/user/info/1)满足告警规则后控制台输出告警信息 参考 https://github.com/apache/skywalking/blob/master/docs/en/setup/backend/backend-alarm.md 对接钉钉 Webhook 回调通知SkyWalking 告警 Webhook 回调要求接收方是一个 Web 容器比如 tomcat 服务告警的消息会通过 HTTP 请求进行发送请求方法为 POSTContent-Type 为 application/jsonJSON 格式基于Listorg.apache.skywalking.oap.server.core.alarm.AlarmMessage的集合对象数集合中的每个AlarmMessage 包含以下信息 scopeId. 所有可用的 Scope参考org.apache.skywalking.oap.server.core.source.DefaultScopeDefinename. 目标 Scope 的实体名称id0. Scope 实体的 IDid1. 未使用ruleName. 在 alarm-settings.yml 中配置的规则名alarmMessage. 报警消息内容startTime. 告警时间, 位于当前时间与 UTC 1970/1/1 之间 [{scopeId 2,scope SERVICE_INSTANCE,name 98e1839 a6fdf48b0aedb0ecabb8ea5f7 192 .168 .233 .1 of springboot - skywalking - demo,id0 c3ByaW5nYm9vdC1za3l3YWxraW5nLWRlbW8 .1 _OThlMTgzOWE2ZmRmNDhiMGFlZGIwZWNhYmI4ZWE1ZjdAMTkyLjE2OC4yMzMuMQ ,id1 ,ruleName service_instance_resp_time_rule,alarmMessage Response time of service instance 98e1839 a6fdf48b0aedb0ecabb8ea5f7 192 .168 .233 .1 of springboot - skywalking - demo is more than 1000 ms in 2 minutes of last 10 minutes,startTime 1613913565462 }, {scopeId 6,scope ENDPOINT_RELATION,name User in User to / user / info / {id} in springboot - skywalking - demo,id0 VXNlcg .0 _VXNlcg ,id1 c3ByaW5nYm9vdC1za3l3YWxraW5nLWRlbW8 .1 _L3VzZXIvaW5mby97aWR9,ruleName endpoint_relation_resp_time_rule,alarmMessage Response time of endpoint relation User in User to / user / info / {id} in springboot - skywalking - demo is more than 1000 ms in 2 minutes of last 10 minutes,startTime 1613913565462 }]SkyWalking 持久化追踪数据 基于 mysql 持久化 1修改 config 目录下的application.yml使用 mysql 作为持久化存储的仓库2修改 mysql 连接配置 storage:# 选择使用mysql默认使用h2不会持久化重启skyWalking之前的数据会丢失selector: ${SW_STORAGE:mysql}# 使用mysql作为持久化存储的仓库mysql:properties:# 数据库连接地址创建swtest数据库jdbcUrl: ${SW_JDBC_URL:jdbc:mysql://1ocalhost:3306/swtest}# 用户名dataSource.user: ${SW_DATA_SOURCE_USER:root}# 密码dataSource.password: ${SW_DATA_SOURCE_PASSWORD:root}注意需要添加 mysql 数据驱动包因为在 lib 目录下是没有 mysql 数据驱动包的所以修改完配置启动是会报错启动失败的。3添加 mysql 数据驱动包到 oap-libs 目录下4启动Skywalking查看 swtest 数据库可以看到生成了很多表说明启动成功了打开配置对应的地址[http://192.168.65.206:8080/](http://192.168.65.206:8080/)可以看到 skywalking 的 web 界面。测试重启 skywalking验证追踪数据会不会丢失。 基于 elasticsearch 持久化 1准备好 elasticsearch 环境参考 ES 专题启动 elasticsearch 服务 bin/elasticsearch -d2修改config/application.yml配置文件指定存储使用 ES修改 elasticsearch 的连接配置3启动 Skywalking 服务启动时会向 elasticsearch 中创建大量的 index 索引用于持久化数据。启动应用程序查看追踪数据是否已经持久化到 elasticsearch 的索引中然后重启 skywalking验证追踪数据会不会丢失。 自定义 SkyWalking 链路追踪 如果我们希望对项目中的业务方法实现链路追踪方便我们排查问题可以使用如下的代码。引入依赖 !-- SkyWalking 工具类 -- dependencygroupIdorg.apache.skywalking/groupIdartifactIdapm-toolkit-trace/artifactIdversion8.11.0/version /dependency在业务方法中可以 TraceContext 获取到 traceId RequestMapping(/list) public ListUser list(){// TraceContext可以绑定key-valueTraceContext.putCorrelation(name, jay);OptionalString op TraceContext.getCorrelation(name);log.info(name {} , op.get());// 获取追踪的traceIdString traceId TraceContext.traceId();log.info(traceId {} , traceId);return userService.list(); }在 Skywalking UI 中查询 tranceId Trace 将方法加入追踪链路 如果一个业务方法想在 ui 界面的追踪链路上显示出来只需要在业务方法上加上 Trace 注解即可测试 加入 Tags 或 Tag 我们还可以为追踪链路增加其他额外的信息比如记录参数和返回信息。实现方式在方法上增加 Tag 或者Tags。 Trace Tag(key list, value returnedObj) public ListUser list(){return userMapper.list(); }Trace Tags({Tag(key param, value arg[0]),Tag(key user, value returnedObj)}) public User getById(Integer id){return userMapper.getById(id); }SkyWalking 集群部署( oap 服务高可用) Skywalking 集群是将 skywalking oap 作为一个服务注册到 nacos 上只要 skywalking oap 服务没有全部宕机保证有一个 skywalking oap 在运行就能进行追踪。搭建一个 skywalking oap 集群需要1至少一个 Nacos也可以是 nacos 集群2至少一个 ElasticSearch 也可以是 es 集群3至少 2 个 skywalking oap 服务4至少 1 个 UI UI 也可以集群多个用 Nginx 代理统一入口 1 修改config/application.yml文件使用nacos作为注册中心修改nacos配置可以选择性修改监听端口修改存储策略使用 elasticsearch 作为 storage2配置 ui 服务 webapp.yml 文件的 oap-service写多个 oap 服务地址3 启动微服务测试指定微服务的 jvm 参数 -Dskywalking.collector.backend_serviceip1:11800,ip2:11800
http://www.dnsts.com.cn/news/122617.html

相关文章:

  • 长春做网站建设的公司做网站小程序挣钱吗
  • 邢台网站建设地方网站换域名做301
  • 旅游网站建设的概念郑州快速网站优化公司哪家好
  • 手机wap网站免费建站app开发一定要有公司吗
  • 西充县住房和城乡规划建设局网站承德市网站建设公司
  • 单页网站编辑器怎样做同城配送网站
  • 优秀的手机网站设计手机网站搭建公司
  • 网站最新发布址建网站公司销售
  • 怎么看一个网站做没做竞价北京seo包年
  • 做网站能挣钱不成都中小企业网站建设
  • 谷歌网站怎么做外链wordpress体育直播
  • 网站建设168最大的网站建设公司排名
  • 广告收益平台搜索引擎优化入门
  • 西充建设局网站搜索引擎营销的过程
  • 上虞网站建设哪家好山东济南公司网站
  • 山东省建设教育集团网站首页广州开发区城市更新局
  • 关于公司网站怎么做建设网站技术方案
  • 企业营销型网站建设的可行性分析花瓣按照哪个网站做的
  • 地方门户网站建设洛可可设计公司市值
  • 榆次做网站济南网站制作哪家最好
  • 衡水医院网站建设网站建设技术外文
  • 中国建设网站下载安装微信官网网站
  • 网站开发公司有哪些怎么做带数据库的网站
  • 东莞活动网站设计模板wordpress 图床 转移
  • 绿色设计网站wordpress 当前分类链接地址
  • 河北网站建设价格低个人做网站好吗
  • 网站建设模块化实现wordpress做微博
  • 石家庄网站建设电话集团网站策划
  • 网站用户粘性域名搜索查询网
  • 猪八戒里面做网站骗子很多直播app软件开发定制