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

不属于动态网页制作技术的是做网站建设优化的公司排名

不属于动态网页制作技术的是,做网站建设优化的公司排名,江门住房和城乡建设部网站,北京建设教育协会的网站关于Zipkin Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调…

关于Zipkin

Zipkin是一款开源的分布式实时数据追踪系统(Distributed Tracking System),能够收集服务间调用的时序数据,提供调用链路的追踪。Zipkin每一个调用链路通过一个trace id来串联起来,通过trace id,就能够直接定位到这次调用链路,并且可以根据服务名、标签、响应时间等进行查询,找出哪些耗时比较长的链路节点。

当用户发起一次调用时,Zipkin的客户端(Brave)会在入口处为整条调用链路生成一个全局唯一的trace id, 一个trace id代表一个完整的调用链。一个trace内部包含多个span。

Zipkin为一条链路中的每一次分布式调用生成一个span id。一个trace由一组span组成,一个trace中的所有span是一个树形结构,树的根节点叫做root span。除root span外,其他span都会包含一个parent Id,表示父级span的span Id。

每个span中包含多个Annotation,用来记录关键事件的时间点。

ZipKin 可以分为两部分:

  • ZipKin Server :用来作为数据的采集存储、数据分析与展示;
  • ZipKin Client :基于不同的语言及框架封装的一些列客户端工具,这些工具完成了追踪数据的生成与上报功能。

ZipKin Server

Zipkin支持的存储类型有inMemory(默认)、MySQL、Cassandra、以及ElasticsSearch几种方式,正式环境推荐使用Cassandra和ElasticSearch。

要使用ZipKin Server非常简单,通过https://repo1.maven.org/maven2/io/zipkin/zipkin-server/下载zipkin-server-x.xx-exec.jar文件,然后执行即可:

# java -jar zipkin-server-3.4.2-exec.jar
...
2024-11-08T11:15:47.484+08:00  INFO [/] 2450 --- [oss-http-*:9411] c.l.a.s.Server                           : Serving HTTP at /[0:0:0:0:0:0:0:0]:9411 - http://127.0.0.1:9411/说明: 如果不指定参数,zipkin server不存储跟踪数据(inMemory) , 可以通过--STORAGE_TYPE参数指定支持的持久化存储。

ZipKin Client

Brave是ZipKin客户端的库文件,在我们编写的代码中使用,用于将我们的埋点信息上报到Zipkin服务器端,通常框架会整合Brave。

vertx-zipkin

Vert.x通过Zipkin Brave整合了Zipkin,提供了一个开箱即用的组件vertx-zipkin,可以让我们轻松的使用Zipkin跟踪Vertx编写的服务的调用。

首先需要添相关依赖添:

<dependency><groupId>io.vertx</groupId><artifactId>vertx-zipkin</artifactId><version>4.5.10</version>
</dependency>

使用vertx-zipkin非常简单,只要为Vertx实例指定相应的zipkin跟踪配置(ZipkinTracingOptions)即可:

import io.vertx.core.Vertx;
import io.vertx.core.VertxOptions;
import io.vertx.core.http.HttpMethod;
import io.vertx.core.http.HttpServer;
import io.vertx.core.http.HttpServerResponse;
import io.vertx.core.json.JsonArray;
import io.vertx.core.json.JsonObject;
import io.vertx.ext.web.Router;
import io.vertx.mysqlclient.MySQLBuilder;
import io.vertx.mysqlclient.MySQLConnectOptions;
import io.vertx.sqlclient.PoolOptions;
import io.vertx.sqlclient.Row;
import io.vertx.sqlclient.SqlClient;
import io.vertx.sqlclient.Tuple;
import io.vertx.tracing.zipkin.HttpSenderOptions;
import io.vertx.tracing.zipkin.ZipkinTracingOptions;public class API01 {public static void main(String[] args) {String senderEndpoint = "http://172.18.240.73:9411/api/v2/spans"; // zipkin serverVertx vertx = Vertx.vertx(new VertxOptions().setTracingOptions(new ZipkinTracingOptions().setSenderOptions(new HttpSenderOptions().setSenderEndpoint(senderEndpoint)).setServiceName("API01"))); // 必须指定唯一的服务名MySQLConnectOptions connectOptions = new MySQLConnectOptions().setHost("127.0.0.1").setPort(3306).setUser("root").setPassword("Passw0rd").setDatabase("hr").setConnectTimeout(2000).addProperty("autoReconnect", "true").addProperty("useSSL","false").addProperty("rewriteBatchedStatements", "true");PoolOptions poolOptions = new PoolOptions().setMaxSize(5);SqlClient client = MySQLBuilder.client().using(vertx).with(poolOptions).connectingTo(connectOptions).build();HttpServer server = vertx.createHttpServer();Router router = Router.router(vertx);router.route(HttpMethod.GET, "/api/v2/api01/:empNo").handler(routingContext ->{String en = routingContext.pathParam("empNo");int empNo = 0;try {empNo = Integer.parseInt(en);} catch(Exception e) {}String sqlText = "select empno, ename, job from emp where empno = ?";client.preparedQuery(sqlText).execute(Tuple.of(empNo)).onSuccess(rows -> {JsonArray result = new JsonArray();for (Row row : rows) {JsonObject json = row.toJson();result.add(json);}HttpServerResponse response = routingContext.response();response.putHeader("content-type", "application/json");response.end(result.toString());}).onFailure(exception -> {routingContext.fail(exception);});});server.requestHandler(router).listen(8001);}
}

启动并调用我们编写的接口,即可在zipkin服务端跟踪我们的调用信息。

访问zipkin服务器"http://172.18.240.73:9411/zipkin/“,点击"Find a trace” -> 点红色的"+“号图标,指定"serviceName”,然后点击"RUN QUERY"按钮进行查询。
在这里插入图片描述
可以看到本次api01调用耗时5.583ms,其中数据库耗时3.407ms。没有其它分布式调用。

设计一个复杂的案例,假设有一个接口api04,在api04中,分别调用api03和api02接口,而在api02中又调用api01接口。调用http://127.0.0.1:8004/api/v2/api04, 来看看zipkin跟踪效果:
在这里插入图片描述
是不是很酷,整个调用链都清晰的显示出来,可以非常直观的看到api04的耗时,包括其内部分布式子调用的顺序和耗时,而我们要做的仅仅是添加几行zipkin配置代码。完整案例代码见文章顶部。

http://www.hkea.cn/news/46588/

相关文章:

  • 网站开发 架构石家庄seo关键词排名
  • 可以免费做商业网站的cms百度seo霸屏软件
  • 哪家网站建设专业快速建站教程
  • 坪山网站建设行业现状优化seo方案
  • 做网站需要架构师吗网站平台有哪些
  • 网站建设丿选择金手指15凡科建站官网
  • 可以做外国网站文章武汉企业seo推广
  • 天津网站建设公司最好太原做网站哪家好
  • 网站代下单怎么做百度指数数据分析平台入口
  • 淘宝做动效代码的网站seo的优化方向
  • 番禺建网站公司网站搜索工具
  • 安徽万振建设集团网站长春网站推广公司
  • 网站怎么制作 推广seo超级外链工具免费
  • 中小学网站建设探讨东莞seo整站优化火速
  • php是网站开发的语言吗企业网站的作用
  • 网站站外优化怎么做企业推广app
  • 拉趣网站是谁做的威海网站制作
  • 做宣传海报的网站百度导航2023年最新版
  • 湖南做网站 磐石网络windows优化大师官方免费
  • 制作网站的最新软件如何优化关键词的方法
  • 东莞工作招聘网最新招聘搜索 引擎优化
  • 宁波俄语网站建设免费发广告的平台有哪些
  • 郑州外贸网站建设及维护营销软件商城
  • 泉州百度关键词排名广州网站营销优化qq
  • 怎么做wep网站营销推广活动方案
  • 展示型网站php官方app下载安装
  • 嘉祥网站建设广东省自然资源厅
  • 忘记网站后台密码网站排名软件推荐
  • 怎么查公司网站有没有被收录火爆产品的推广文案
  • 绵阳网站建设 经开区网络教学平台