4.go语言高并发与微服务实战---go语言高级特性

enlyhua enlyhua     2022-12-02     556

关键词:

第 4 章 进阶——Go 语言高级特性
	Go语音是一门静态强类型的语言,在程序编译的过程中会把变量的反射信息如字段类型、类型信息等写到可执行文件中。在程序执行过程中,
Go语音虚拟机加载可执行文件中变量的反射信息,并提供接口用于在运行时获取和修改代码的能力。
	
	Go语音支持两种并发模型,一种是我们常见的共享内存并发模型;另一种是基于Go语音推荐的CSP(顺序通信进程)并发模型。Go语音使用了一种
特殊的MPG线程模型,使得可以原生支持协程并发,大大提供了程序的执行效率。


4.1 依赖管理 
	4.1.1 包管理 
	4.1.2 GOPATH 
	4.1.3 Go Modules 

4.2 反射基础 
	4.2.1 reflect.Type 类型对象 
	4.2.2 类型对象 reflect.StructField 和 reflect.Method 
	4.2.3 reflect.Value 反射值对象 
	【实例 4-1】使用反射调用接口方法 

4.3 并发模型 
	4.3.1 并发与并行 
		并发不要求cpu具备多核计算的能力。
		并行程序则要求cpu提供多核并行计算的能力。

		并发程序的执行通常是不确定的,这种不确定来源于资源之间的互相依赖和竞态条件,这可能导致执行线程之间的互相等待,使得并发程序即使
	在多核环境上也无法做到真正并行执行而降级为串行执行。

		并行程序的每个执行模块在逻辑上是独立的,即线程执行时可以独立完成任务,从而可以做到同一时刻多个指令能够同时执行。

	4.3.2 CSP 并发模型 
		Go语音实现了两种并发模型:
			1.我们熟悉的线程与锁并发模型,它主要是依赖于共享内存实现。线程与锁模型类似于对底层硬件运行过程的形式化,程序的正确运行很大
			程度上依赖于开发人员的能力和技巧,程序在出错时不易排查。
			2.Go语音中提倡使用的CSP通信顺序进程模型。

		CSP模型中存在两个关键的概念:
			1.并发实体࿰

11.go语言高并发与微服务实战---统一认证与授权

统一认证与授权:        查看详情

12.go语言高并发与微服务实战---分布式链路追踪

分布式链路追踪:      查看详情

12.go语言高并发与微服务实战---分布式链路追踪

分布式链路追踪:      查看详情

2.go语言高并发与微服务实战---微服务概述

....2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 1.高内聚,低耦合 2.高度自治 3.以业务为中心 4.弹性设计 5.日志与监控 查看详情

2.go语言高并发与微服务实战---微服务概述

....2常见的微服务框架 2.2.1Java中的SpringCloud与Dubbo框架 2.2.2Go语言中的GoKit与GoMicro框架2.3微服务设计的六大原则 1.高内聚,低耦合 2.高度自治 3.以业务为中心 4.弹性设计 5.日志与监控 查看详情

13.go语言高并发与微服务实战---综合实战:秒杀系统的设计与实现

13.综合实战:秒杀系统的设计与实现 秒杀系统设计原则: 1.数据要尽量少 2.请求数尽量少 3.路径要尽量短 4.依赖要尽量少 5.尽量不要有单点       查看详情

13.go语言高并发与微服务实战---综合实战:秒杀系统的设计与实现

13.综合实战:秒杀系统的设计与实现 秒杀系统设计原则: 1.数据要尽量少 2.请求数尽量少 3.路径要尽量短 4.依赖要尽量少 5.尽量不要有单点       查看详情

10.go语言高并发与微服务实战---微服务的容错处理与负载均衡

第10章微服务的容错处理与负载均衡10.1服务熔断 10.1.1分布式系统中的服务雪崩 10.1.2服务熔断保障系统可用性 10.1.3断路器10.2负载均衡 1.负载均衡类型 2.负载均衡算法      查看详情

8.go语言高并发与微服务实战---分布式配置中心

第8章分布式配置中心8.1如何管理分布式应用的配置8.2常见分布式配置中心开源组件 8.2.1SpringCloudConfig. 8.2.2Apollo 8.2.3Disconf 8.2.4分布式配置中心的对比8.3应用SpringCloudConfig统一管理配置 8.3.1搭建SpringCloudConfigServer 8.3.2Viper介绍 【实例... 查看详情

9.go语言高并发与微服务实战---微服务网关

第9章微服务网关 在微服务架构下,单体应用被切割成多个微服务,如果将所有的微服务直接对外暴露,势必会出现一些问题。客户端可以直接向每个微服务 发送请求,但是会存在如下问题: 1.客户端需求和每个微服务暴露的... 查看详情

6.go语言高并发与微服务实战---服务注册与发现

第6章服务注册与发现6.1服务注册与发现的基本原理 6.1.1服务注册与发现中心的职责 6.1.2服务实例注册服务信息 6.1.3CAP原理6.2常用的服务注册与发现框架 6.2.1基于Raft算法的开箱即用服务发现组件Consul 6.2.2基于HTTP协议的分布式key/Va... 查看详情

1.go语言高并发与微服务实战---云原生架构

1.1云计算的历史 1.1.1云计算的基础:虚拟化技术 1.1.2基于虚拟机的云计算 1.1.3容器的横空出世和容器编排大战 1.1.4云计算演进总结1.2云原生是什么 1.2.1云原生出现的背景 1.2.2云原生的定义 1.2.3云原生与12因素1.3云原生的基础架构 ... 查看详情

1.go语言高并发与微服务实战---云原生架构

1.1云计算的历史 1.1.1云计算的基础:虚拟化技术 1.1.2基于虚拟机的云计算 1.1.3容器的横空出世和容器编排大战 1.1.4云计算演进总结1.2云原生是什么 1.2.1云原生出现的背景 1.2.2云原生的定义 1.2.3云原生与12因素1.3云原生的基础架构 ... 查看详情

7.go语言高并发与微服务实战---远程过程调用rpc

第7章远程过程调用RPC7.1RPC机制和实现过程 7.1.1RPC机制 1.客户端进程以正常的方式调用客户存根 2.客户存根生成一个消息,然后调用本地操作系统的网络模块,存根进入阻塞状态 3.客户端操作系统将网络消息发送给远程操作系... 查看详情

1.5go微服务实战(go语言基础)---并发编程

第5章 并发编程 Go语言的多线程是基于消息传递的,Go语言将基于CSP模型的并发编程内置到了语言中,其特点就是goroutine之间是共享内存的。5.1 协程 协程是Go语言特有的一种轻量级线程,实际上,所有的Go语言... 查看详情

2.1go微服务实战(go语言进阶)---并发编程进阶

第8章 并发编程进阶8.1 竞态与并发模式 8.1.1 数据竞态 8.1.2 并发原理8.2 sync包 8.2.1 sync.Mutex互斥锁 8.2.2 sync.RWMutex多读写锁 8.2.3 sync.Once 8.2.4 sync.Cond 8.2.5 sync.Pool 8.2.6 sync.Map8.3 context包 8.3.1 应用场景 8.3.2 定义 8.3.3... 查看详情

1.6go微服务实战(go语言基础)---包和代码测试

...具6.2 代码优化 6.2.1 Go代码的优化 代码的优化要基于Go语言的语法和编译器原理进行。代码的优化关键是性能分析。 Go语言提供了runtime/pprof标准库。gotoolpprof--help 6.2.2 性能分析 常见原因: 1.cpu占有率高,高负荷运转,要... 查看详情

1.3go微服务实战(go语言基础)---字符串与复合数据类型

第3章 字符串与复合数据类型3.1 字符串和数组 3.1.1 字符串 3.1.2 数组3.2 slice 3.2.1 结构定义 3.2.2 基本操作 3.2.3 append 3.2.4 copy 3.2.5 其他3.3 map 3.3.1 定义 3.3.2 基本操作3.4 struct 3.4.1 结构定义 3.4.2 基本操作 3.4.3... 查看详情