Go 并发编程--信息穿透上下文 context
【导读】Go 语言编程中的 Context 怎么用?如何更好更快地利用 Context 实现功能?本文做了详细介绍。Context 的来历Go 在 1.7 的版本中才正式把 Context 加入到标准库中。在这之前,很多 Web 框架在定义自己的 handler 时,都会传递一个自定义的 Conte
【导读】Go 语言编程中的 Context 怎么用?如何更好更快地利用 Context 实现功能?本文做了详细介绍。Context 的来历Go 在 1.7 的版本中才正式把 Context 加入到标准库中。在这之前,很多 Web 框架在定义自己的 handler 时,都会传递一个自定义的 Conte
【开始】golang 并发机制和其他语言在实现上有什么不同?为什么能做到高效快速?本文做了详细介绍。由于对普通语法的介绍网上资源极多,Go 官方的上手指南 A Tour of Go: https://tour.golang.org/ (请自备梯子)就是极好的例子,我不再打算就语法细节进行详述。这次
1.值类型:变量直接存储值,内存通常在栈中分配。值类型:int、float、bool、string、数组、struct2.引用类型:变量存储的是一个地址,这个地址存储最终的值。内存通常在 堆上分配。通过GC回收。引用类型:指针、slice、map、chan
rpcRPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议。RPC协议构建于TCP或UDP,或者是HTTP上。允许开发者直接调用另一台服务器上的程序,而开发者无需另外的为这个调用过程编写网络通信相关代码
当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。本节简单搭建一下z
笔记二提过依赖注入,和如何生成,但没有细讲,本文来简单看看kratos的依赖注入。什么是依赖注入先来看一个小程序,创建一个小程序模拟迎宾员问候客人的事件我们将创建三个结构类型:1)为迎宾员创建消息 message2)表达消息的迎宾员 greeter3)迎宾员问候客人的事件 eventtype Mes
本节看看kratos的学习负载均衡策略的使用。kratos 的负载均衡和服务发现一样也是基于grpc官方api实现的。grpc官方的负载均衡自带了一个round-robin轮询策略、即像一个for循环一样挨个服的发请求、但这显然不能满足我们的需求、于是kratos自带了两种负载均衡策略:WRR (W
本节看看kratos的配置中心paladin(骑士)。kratos对配置文件进行了梳理,配置管理模块化,如redis有redis的单独配置文件、bm有bm的单独配置文件,及为方便易用。paladin 本质是一个config SDK客户端,包括了remote、file、mock几个抽象功能,方便使用本
warden direct本文是学习kratos warden第一节,kratos warden的直连方式client调用,我直接用demo项目做示例demo-server先创建一个用作grpc-serverkratos new grpc-server 在创建一个调用grpc-server接口的ca
前面两篇跑通了demo项目,和大概了解了kratos demo整体结构,本篇分别构建一个http和一个grpc微服务单独测试。grpc先从grpc 开始, 上篇没有测试grpc接口,这回来尝试,直接跑起demo 服务。kratos new rpcdemo --grpckratos run INFO
本章来看看demo项目的整体结构。目录结构├─api # 对外接口 ├─cmd # main ├─configs # 配置 ├─internal │ ├─dao #数据访问 │ ├─di #依赖注入 │ ├─model #业务结构体的声
常见微服务框架主要有这么几个gizmo, a microservice toolkit from The New York Times ★go-micro, a microservices client/server library ★gotalk, async peer communication
+号拼接:func StringPlus(p []string) string{ var s string l:=len(p) for i:=0;i
比如我们有一个 log 文件,运行了几年,有 100G 之大。按照我们之前的操作可能代码会这样写:func ReadFile(filePath string) []byte { content, err := ioutil.ReadFile(filePath) if err != nil {
并发与并行并发:在某个时间只能执行一个任务,但系统在执行过程中会进行多个任务间的快速切换,所以宏观上来看,就像同一个时刻执行多个任务一样。并行:在某个时间执行多个任务,并行要求有多核,每个核执行不同的任务,多个核都在运转。示例图说明:并发是单核在处理,例如ABCD四个任务,单核心会不断在这四个任务之
之前的goroutine都是作用在函数上测试的,但很多时候各个函数之间需要相互传输数据,那么就需要用到channel通道。channel是安全的,不会发生死锁等问题。goroutine和channel往往结合使用,channel连接了不同的goroutine,使其相互传输数据。定义channel是一
比如我们有一个 log 文件,运行了几年,有 100G 之大。按照我们之前的操作可能代码会这样写:func ReadFile(filePath string) []byte { content, err := ioutil.ReadFile(filePath) if err != nil {
+号拼接:func StringPlus(p []string) string{ var s string l:=len(p) for i:=0;i
常见微服务框架主要有这么几个gizmo, a microservice toolkit from The New York Times ★go-micro, a microservices client/server library ★gotalk, async peer communication
本章来看看demo项目的整体结构。目录结构├─api # 对外接口 ├─cmd # main ├─configs # 配置 ├─internal │ ├─dao #数据访问 │ ├─di #依赖注入 │ ├─model #业务结构体的声
前面两篇跑通了demo项目,和大概了解了kratos demo整体结构,本篇分别构建一个http和一个grpc微服务单独测试。grpc先从grpc 开始, 上篇没有测试grpc接口,这回来尝试,直接跑起demo 服务。kratos new rpcdemo --grpckratos run INFO
warden direct本文是学习kratos warden第一节,kratos warden的直连方式client调用,我直接用demo项目做示例demo-server先创建一个用作grpc-serverkratos new grpc-server 在创建一个调用grpc-server接口的ca
本节看看kratos的配置中心paladin(骑士)。kratos对配置文件进行了梳理,配置管理模块化,如redis有redis的单独配置文件、bm有bm的单独配置文件,及为方便易用。paladin 本质是一个config SDK客户端,包括了remote、file、mock几个抽象功能,方便使用本
kratos 服务发现 discovery
本节看看kratos的学习负载均衡策略的使用。kratos 的负载均衡和服务发现一样也是基于grpc官方api实现的。grpc官方的负载均衡自带了一个round-robin轮询策略、即像一个for循环一样挨个服的发请求、但这显然不能满足我们的需求、于是kratos自带了两种负载均衡策略:WRR (W
笔记二提过依赖注入,和如何生成,但没有细讲,本文来简单看看kratos的依赖注入。什么是依赖注入先来看一个小程序,创建一个小程序模拟迎宾员问候客人的事件我们将创建三个结构类型:1)为迎宾员创建消息 message2)表达消息的迎宾员 greeter3)迎宾员问候客人的事件 eventtype Mes
当代的互联网的服务,通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上,这些软件模块,有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器,横跨多个不同的数据中心。因此,就需要一些可以帮助理解系统行为、用于分析性能问题的工具。本节简单搭建一下z
rpcRPC(Remote Procedure Call,远程过程调用)是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络细节的应用程序通信协议。RPC协议构建于TCP或UDP,或者是HTTP上。允许开发者直接调用另一台服务器上的程序,而开发者无需另外的为这个调用过程编写网络通信相关代码
1.值类型:变量直接存储值,内存通常在栈中分配。值类型:int、float、bool、string、数组、struct2.引用类型:变量存储的是一个地址,这个地址存储最终的值。内存通常在 堆上分配。通过GC回收。引用类型:指针、slice、map、chan