40张图看懂分布式追踪系统原理及实践

前言 在微服务架构中,一次请求往往涉及到多个模块,多个中间件,多台机器的相互协作才能完成。这一系列调用请求中,有些是串行的,有些是并行的,那么如何确定这个请求背后调用了哪些应用,哪些模块,哪些节点及调用的先后顺序?如何定位每个模块的性能问题?本文将为你揭晓答案。 本文将会从以下几个方面来阐述 分布式追踪系统原理及作用 SkyWalking的原理及架构设计 我司在分布式调用链上的实践 分布式追踪系统的原理及作用 如何衡量一个接口的性能好坏,一般我们至少会关注以下三个指标 接口的 RT 你怎么知道?...阅读全文

简书 2020-09-09 17:34:44 JAVA进阶之道

从零入门 Serverless | 函数计算的可观测性

作者 | 夏莞 阿里巴巴函数计算团队本文整理自《Serverless 技术公开课》,关注“Serverless”公众号,回复“入门”,即可获取 Serverless 系列文章 PPT。导读:本文主要分为三个部分:概述中介绍可观测性的基本概念,主要包括 Logging、Metrics、Tracing 三个方面;然后详细介绍函数计算上的 Logging、Metrics、Tracing;最后以几个常见场景为例,介绍在函数计算中如何快速定位问题并解决问题。概述可观测性是什么呢?维基百科中这样说:可观测性...阅读全文

Segmentfault 2020-09-13 10:32:33 阿里巴巴云原生

golang socket中tcp中的ioutil.ReadAll阻塞的问题

最近有写socket相关的东西,刚好有人问我这个问题,我就记录一下,发现这个问题还是有很多人不了解的。 在socket-tcp的代码中大致这两种接受数据的方法,con.Read以及ioutil.ReadAll,这两种方法的区别是什么,以及他们的使用方法。 区别 func (c *conn) Read(b []byte) (int, error) 在socket中,Read方法直接读取一段指定长度的字节,当然这个方法也是阻塞的,如果对面没有发送数据,他会一直等到超时, ioutil.ReadAll...阅读全文

简书 2020-09-09 13:32:38 哆啦在这A梦在哪

【Go语言入门系列】(九)写这些就是为了搞懂怎么用接口

【Go语言入门系列】前面的文章:【Go语言入门系列】(六)再探函数【Go语言入门系列】(七)如何使用Go的方法?【Go语言入门系列】(八)Go语言是不是面向对象语言?1. 引入例子如果你使用过Java等面向对象语言,那么肯定对接口这个概念并不陌生。简单地来说,接口就是规范,如果你的类实现了接口,那么该类就必须具有接口所要求的一切功能、行为。接口中通常定义的都是方法。就像玩具工厂要生产玩具,生产前肯定要先拿到一个生产规范,该规范要求了玩具的颜色、尺寸和功能,工人就按照这个规范来生产玩具,如果有一项...阅读全文

Segmentfault 2020-09-13 09:32:31 行人观学

WebAssembly运行时--Wasmtime

Wasmtime是由 bytecodealliance 开源的WebAssembly和WASI的小型高效运行时。它在Web外部运行WebAssembly代码,既可以用作命令行实用程序,也可以用作更大应用程序中嵌入的库。具备以下特点:轻量级。Wasmtime是WebAssembly的独立运行时,可根据您的需求进行扩展。它适合于微型芯片,也可以使用大型服务器。 Wasmtime也可以嵌入几乎所有应用程序中。快。Wasmtime建立在优化的Cranelift代码生成器上,可在运行时快速生成高质量的机器...阅读全文

Segmentfault 2020-09-13 08:32:32 iyacontrol

vscode 配置go开发环境 win10

1. 下载go => https://golang.google.cn/2. 安装简单,修改默认C盘安装目录,选择自己喜欢的除C盘外的目录3. 开启module和使用七牛云国内镜像$ go env -w GO111MODULE=on$ go env -w GOPROXY=https://goproxy.cn,direct4. 设置gopath,随意自己弄个位置5.安装vscode + go插件可以开始玩go了,不过打开vscode开发需要两个注意的第一个是google官方的一些包是没有被卡掉,因...阅读全文

简书 2020-09-09 05:32:44 ByPeterLi

Python与Golang各自的特点及应用领域

特点 python ①解释型语言 程序不需要在运行前编译,在运行程序的时候才翻译,专门的解释器负责在每个语句执行的时候解释程序代码。这样解释型语言每执行一次就要翻译一次,效率比较低。 ②动态数据类型 支持重载运算符,也支持泛型设计。(运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。泛型设计就是定义的时候不需要指定类型,在客户端使用的时候再去指定类型) ③完全面向对象的语言 函数,模块,数字,字符串都是对象,在Python中,一切接对象 完全支持继承,重载,多重...阅读全文

简书 2020-09-08 23:57:22 晨曦迫晓

工作好多年有可能还未真正了解接口和抽象类

抽象类和接口的定义和区别?抽象类在面向对象编程中解决了什么问题?接口在面向对象编程中解决了什么问题?如何决定该用抽象类还是接口?如果使用的语言不支持抽象类和接口,该如何应对?抽象类在面向对象编程的语言中,多数都添加了对抽象类和接口的支持,比如最常用的java,C#等语言。 //抽象类 public abstract class Human { //抽象方法 public abstract string Gender(); //属性 public string Name { get; set; }...阅读全文

Segmentfault 2020-09-12 20:32:33 菜菜

GO安装(Linux,Mac,Windows)

1.前言本文主要介绍GO环境的搭建,包含在Linux,Mac和Windows上的搭建,部分内容参考了GO的官方文档。2.简述Go 语言支持以下系统:LinuxMac OS XWindowsFreBSBGo的下载地址:https://golang.google.cn/dl/ 3.GO版本软件的发行版本一般分为稳定版和历史版本。稳定版经过了经过长久测试且其涵盖了较新功能,适合刚入手者选用;历史版本的可选性较多,一般来说,项目都有约定使用的版本,可以在历史版本中找到对应版本。3.1 下载说明1)OS:...阅读全文

51CTO博客 2020-09-08 07:58:22 测试生财

Golang 学习记录 (一)

声明变量 var声明 var name type 和 var name type = value 以及批量定义 var name1, name2 = value1, value2 var ( a int b string c []float32 d func() bool e struct { x int } ) :=海象符 name := value 相比更简单,但需要注意以下问题 必须赋值 必须是新变量 不能提供数据类型 只能用在函数内部 name, age := value1, value...阅读全文

简书 2020-09-08 18:55:06 Gascognya

我的黄金时代

图片发自我的黄金时代 那一天我二十一岁,在我一生的黄金时代,我有好多奢望。我想爱,想吃,还想在一瞬间变成天上半明半暗的云。后来我才知道,生活就是个缓慢受锤的过程,人一天天老下去,奢望也一天天消失,最后变得像挨了锤的牛一样。我觉得自己会永远生猛下去,什么也锤不了我。 一. 关于生活 每个人都有自己的兴趣爱好,我也是。 01 互联网公司果然都是超快猛,生活不止997,还有99 81,对,最长连续加班时间 99 81,信不信由你,不服来挖。高强度的工作逼着你不能让身体拖后腿,所以首先得吃好点,吃我是不...阅读全文

简书 2020-09-08 17:59:55 田飞雨

Google搜索技巧(一)

1. “ ” :“ ”双引号代表完全匹配的意思 普通搜索会进行分词 如果使用双引号,则搜索内容必须包含双引号内容 如 普通搜索:java springboot,搜索引擎会选择分词后最关联的搜索结果 当我们加上双引号后:"java springboot" ,搜索结果如下 显然,双引号中的搜索关键字,搜索结果须全部包含,而不是选择分词后最关联的选项。2. - :- 减号代表除去某某搜索结果 比如,我们搜索:fastjson 忽略字段 ,搜索结果如下 合格的程序员都知道,csdn大部分文章都是复制粘贴...阅读全文

简书 2020-09-08 17:58:39 小时光_d75e

MinIO的JavaSDK调用(最新版)

MinIO Minio是GlusterFS创始人之一Anand Babu Periasamy发布新的开源项目。可以做为云存储的解决方案用来保存海量的图片,视频,文档。由于采用Golang实现,服务端可以工作在Windows,Linux, OS X和FreeBSD上。配置简单,基本是复制可执行程序,单行命令可以运行起来。 安装请参考官方文档 MinIO的SDK调用 截至目前最新版的依赖 <dependency> <groupId>io.minio</groupId> <artifactId>min...阅读全文

简书 2020-09-08 17:58:04 0慕念0

详解 Go 中的不可变类型

Golang 中的不变性如何利用不变性来增强你的 Golang 应用程序的可读性和稳定性不变性的概念非常简单. 创建对象 (或结构体) 后, 将永远无法更改它. 这是一成不变的. 尽管这个概念看起来很简单, 但使用它或从中受益并不那么容易.正如计算机科学 (和生活) 中的大多数事物一样, 有许多种方法可以达到相同的结果, 就不变性而言, 两者没有什么不同. 您应该把它看做是工具包中的一个工具,并使用在适用的问题场景上. 关于不变性的一个非常好的用例是在您进行并发编程时. Golang 在设计时就...阅读全文

简书 2020-09-08 17:58:04 MO_ON_e503

分享一个非常不错的CMS后台管理系统

做为程序员最怕的就是反复造轮子这种体力活,其实现在市场上有很多很好的开源框架,已经帮大家造好了,就等你来使用,今天为大家介绍一个款目前很少见的基于基于GF(Go Frame)的CMS后台管理系统,系统前端采用ruoyi-ui 、Vue、Element UI,后端采用GO语言 框架 GF(Go Frame) 前后端分离方式进行开发。主要功能有:用户管理:用户是系统操作者,该功能主要完成系统用户配置。部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。岗位管理:配置系统用户所属担...阅读全文

Go语言中文网 2020-09-08 17:24:16 kocie

PHP爬虫语言的优点与缺点

对于网络爬虫来说,python和java是大众的选择语言框架,其实编程中有许多框架语言来编写自己的爬虫程序。至于选择什么语言,根据自己的情况而定。爬虫的接口很简单,分析目标网站,找到该网站的API链接,在下载链接数据。开发语言框架我选择了PHP。PHP语言的优点与缺点:优点:1、操作简单,使用方便2、可支持C,java去执行代码3、支持多种平台,多种框架4、支持采集各种数据5、成本低缺点:1、语法编码不太完善2、不支持多线程3、难以拓展,运维复杂以下是PHP使用爬虫代理IP的代码:<?php ...阅读全文

Go语言中文网 2020-09-08 17:15:39 laical

数组栈、链表栈谁的性能更优【Go语言测试】

刚入门Go语言,发现Go本身并没有像Java那样提供比如Stack,或是LinkedList的实现,于是基于切片的特点,封装了栈、队列、双向队列。栈也可以基于链表来实现,那到底谁的性能会更优呢,于是便有了这篇性能对比。  本文将对比基于Go语言切片实现的栈和基于链表实现的栈的性能,文中会涉及简单的数据结构、Go语言interface、slice、基准测试等知识点。  文中有不对的地方还望大家指出 1、栈、队列、双向队列  栈(Stack)是一种常见的数据结构,具有先进后出(FILO)的特点,只可...阅读全文

简书 2020-09-08 15:54:19 Yangzhoufly

Golang创建私有仓库

Git配置 GitLab远程仓库配置 代码仓库选择的是GitLab 在GitLab创建代码仓库的群组,这里不要创建子组,否则,在go get的时候,无法获取tag,这个是GitLab的问题。创建之后的路径demo:gitlab.domain.com/group/project。 由于是公司内部使用,所以项目的Visibility Level 设置为 “内部” 即可。 在GitLab的设置中,设置“访问令牌”,Scope 选择 read_repository。 本地Git配置 在本地的git中设置...阅读全文

简书 2020-09-08 15:54:16 田佳伟

Go语言并发

Go 语言支持并发,我们只需要通过 go 关键字来开启 goroutine 即可。 goroutine 是轻量级线程,goroutine 的调度是由 Golang 运行时进行管理的。 goroutine 语法格式: go 函数名( 参数列表 ) 例如: go f(x, y, z) 开启一个新的 goroutine: f(x, y, z) Go 允许使用 go 语句开启一个新的运行期线程, 即 goroutine,以一个不同的、新创建的 goroutine 来执行一个函数。 同一个程序中的所有 g...阅读全文

简书 2020-09-08 14:35:48 醉倾城1