0%

您好,地球人,欢迎来到Kratos漫游指南。

对于刚开始研究Kratos框架的开发者来说,目前的文档有些零散,这与我们的模块化设计有一些关系,不过Don’t panic,从这篇文章开始,我将试图打破这一现状,漫游指南系列将循序渐进地介绍Kratos框架,理顺框架的使用思路,使您更快上手Kratos。

链路追踪的前世今生

分布式跟踪(也称为分布式请求跟踪)是一种用于分析和监控应用程序的方法,尤其是使用微服务架构构建的应用程序。分布式跟踪有助于精确定位故障发生的位置以及导致性能差的原因。

创建项目

首先需要安装好对应的依赖环境,以及工具:

  1. go
  2. protoc
    • go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
  3. protoc-gen-go
    • go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest
# 创建项目模板
kratos new helloworld

cd helloworld
# 拉取项目依赖
go mod download
# 生成proto模板
kratos proto add api/helloworld/helloworld.proto
# 生成proto源码
kratos proto client api/helloworld/helloworld.proto
# 生成server模板
kratos proto server api/helloworld/helloworld.proto -t internal/service

执行命令后,会在当前目录下生成一个 service 工程,工程骨架如下,具体的工程骨架说明可以访问 layout

Prometheus简介

什么是 Prometheus

Prometheus 是在 Soundcloud 以开源软件的形式进行研发的系统监控和告警工具包,自此以后,许多公司和组织都采用了 Prometheus 作为监控告警工具。Prometheus 的开发者和用户社区非常活跃,它现在是一个独立的开源项目,可以独立于任何公司进行维护。Prometheus 于 2016 年 5 月加入 CNCF 基金会,成为继 Kubernetes 之后的第二个 CNCF 托管项目。

什么是日志

所谓日志(Log)是指系统所指定对象的某些操作和其操作结果按时间有序的集合。log文件就是日志文件,log文件记录了系统和系统的用户之间交互的信息,是自动捕获人与系统终端之间交互的类型、内容或时间的数据收集方法。

Linux基础系统优化

Linux的网络功能相当强悍,一时之间我们无法了解所有的网络命令,在配置服务器基础环境时,先了解下网络参数设定命令。

  • ifconfig  查询、设置网卡和ip等参数
  • ifup,ifdown 脚本命令,更简单的方式启动关闭网络
  • ip  符合指令,直接修改上述功能

在我们刚装好linux的时候,需要用xshell进行远程连接,那就得获取ip地址,有时候网卡默认是没启动的,Linux也就拿不到ip地址,因此我们得手动启动网卡

电脑:辅助人脑的工具

现在的人们几乎无时无刻都会碰电脑!不管是桌上型电脑(桌机)、笔记型电脑(笔电)、平板电脑、智慧型手机等等,这些东西都算是电脑。虽然接触的这么多,但是,你了解电脑里面的元件有什么吗?以桌机来说,电脑的机壳里面含有什么元件?不同的电脑可以应用在哪些工作?你生活周遭有哪些电器用品内部是含有电脑相关元件的?底下我们就来谈一谈这些东西呢!

常用指令

  1. ls 显示文件或目录

    • -l 列出文件详细信息l(list)
    • -a 列出当前目录下所有文件及目录,包括隐藏的a(all)
  2. mkdir 创建目录

    • -p 创建目录,若无父目录,则创建p(parent)
  3. cd 切换目录

微服务架构全景图

服务注册和发现

  1. Client side implement

    • 调用需要维护所有调用服务的地址
    • 有一定的技术难度,需要rpc框架支持
  2. Server side implement

    • 架构简单
    • 有单点故障

注册中心

  1. etcd注册中心

这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。

我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解。本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂。