![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
go
文章平均质量分 69
Coding到灯火阑珊
Coding
展开
-
Kubernetes原生api部署微服务4-创建Ingress
Ingress资源提供了从kubernetes集群外部访问集群内部service的HTTP及HTTPS的路由,可以提供负载均衡、SSL/TLS终端和基于名称的虚拟主机等功能。原创 2022-01-13 16:51:34 · 241 阅读 · 0 评论 -
Kubernetes原生api部署微服务3-创建Configmap
Configmap是kubernetes的一种资源对象,可以将应用的配置信息与容器镜像解耦,即配置信息的修改不需要重新构建容器镜像。原创 2022-01-09 14:53:35 · 410 阅读 · 0 评论 -
Kubernetes原生api部署微服务2-创建Namespace、Deployment、Service
Client-go是kubernetes官方开源的访问Api Server的客户端,通过Client-go我们可以对kubernetes的资源进行增删改查等操作。原创 2022-01-04 10:17:26 · 601 阅读 · 0 评论 -
Kubernetes原生api部署微服务1-构建微服务
在使用kubernetes原生api部署微服务前,需要先构建一个微服务系统。我们使用gin框架搭建简单的博客系统,包含2个简单的微服务系统:用户微服务和文章微服务。原创 2022-01-01 19:28:57 · 1009 阅读 · 0 评论 -
Kubernetes原生api部署微服务系列
在使用 Kubernetes REST API 编写应用程序时,我们不需要自己实现http rest api接口的请求及传输数据的编解码,可以使用Kubernetes官方提供的客户端库来实现。本系列就是使用kubernetes官方开源的客户端client-go调用Api Server的接口来部署微服务。原创 2021-12-30 12:42:35 · 796 阅读 · 4 评论 -
深入学习Go-9 逃逸分析
逃逸分析发生在编译阶段,是指由编译器决定变量被分配在栈区还是堆区。如果分配在栈区,当函数执行完成后内存自动释放;如果分配在堆区,函数执行完成后由垃圾回收机制释放内存。原创 2021-12-23 10:04:50 · 476 阅读 · 0 评论 -
深入学习Go-8 同步及同步扩展
在Go语言中除了Channel,还提供了一系列同步及扩展原语来保证多个 Goroutine 在访问同一片内存时不会出现数据竞争等问题。原创 2021-12-20 09:51:38 · 496 阅读 · 0 评论 -
深入学习Go-7 Channel
Go语言实现了CSP的并发编程模式,即不要通过共享内存来通信,而要通过通信来实现内存共享。channel就是各groutine之间通信的管道。原创 2021-12-15 09:19:08 · 675 阅读 · 0 评论 -
深入学习Go-6 defer、panic与recover
Go语言的defer一般用于资源的释放和异常的捕捉,资源释放如关闭文件描述符、关闭数据库链接、释放锁等;异常捕捉需要与recover函数一起配合使用。原创 2021-12-11 10:47:54 · 663 阅读 · 0 评论 -
深入学习Go-5 反射
反射是指程序在运行时可以访问、检测和修改自身状态和行为的一种能力。本质就是程序在运行期获取对象的类型和内存结构。原创 2021-12-06 12:51:18 · 267 阅读 · 0 评论 -
区块链-资深技术架构师
技术提升是为了更好的生活、工作,因此在这里除了分享技术文章外,也会发布一些职位信息,希望对大家有所帮助,都能找到称心如意的工作。原创 2021-12-02 13:13:22 · 11735 阅读 · 0 评论 -
深入学习Go-4 切片
切片,长度是不固定的,当容量不足时,进行动态扩容,所以又叫动态数组。原创 2021-12-02 09:39:21 · 651 阅读 · 0 评论 -
深入学习Go-3 数组
数组是由相同类型的元素组成的集合,在内存中分配了一片连续的区域,初始化时需要指定长度。原创 2021-11-29 09:22:22 · 650 阅读 · 0 评论 -
深入学习Go-2 字符串
字符串是一种重要的数据结构,是编程语言的基础数据类型。原创 2021-11-26 08:54:01 · 183 阅读 · 0 评论 -
深入学习Go-1 基本数据类型及大数计算
基本数据类型及大数计算原创 2021-11-23 10:13:46 · 1117 阅读 · 0 评论 -
十二,构建Docker镜像
通过前面的十一篇文章,我们基于Go-kit微服务框架建立了图书馆借书项目,包括三个微服务、一个网关、限流、服务注册与发现、熔断降级、监控和分布式链路追踪。接下来我们将微服务构建成 docker 镜像,在容器中启动服务。完整代码:https://github.com/Justin02180218/micro-kit编写Dockerfile创建 deploy/docker 目录,在此目录下编写 Dockerfile 文件,如图:构建 user-service 镜像创建 .原创 2021-10-23 10:17:41 · 245 阅读 · 0 评论 -
十三,部署微服务到K8S
上一篇文章我们构建了微服务的 Docker 镜像,接下来我们将镜像部署到K8S中。完整代码:https://github.com/Justin02180218/micro-kit部署架构每个微服务启动2个 pod 注册到 consul 上,网关也启动2个 pod 从 consul 上获取微服务的一个 pod 实例来访问接口。在 ingress 上配置了4个域名转发: api.library.com: 访问 api 网关 consul.library.com原创 2021-10-17 21:56:03 · 2258 阅读 · 0 评论 -
十一,微服务监控
监控 PROMETHEUSPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),使用Go语言开发,是Google BorgMon监控系统的开源版本。prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。项目中应用完整代码:https://github.com/Justin02180218/micro-kit配置文件prometheus: namespace: "library"原创 2021-10-10 11:10:50 · 686 阅读 · 0 评论 -
十,分布式链路追踪
链路追踪 ZipkinZipkin是 Twitter 的一个开源项目,基于 Google Dapper实现。使用它来收集各个服务器上请求链路的跟踪数据,及时地发现系统中出现的延迟问题,找出系统的性能瓶颈。项目中应用完整代码:https://github.com/Justin02180218/micro-kit配置文件zipkin: url: "http://zipkin-server:9411/api/v2/spans" service_name: "user-原创 2021-10-07 11:03:48 · 1331 阅读 · 0 评论 -
九,自写网关(library-apigateway)
网关 library-apigateway,接口访问的统一入口。通过 consul 获取注册的微服务的某一个实例,发起访问请求。如图:完整代码:https://github.com/Justin02180218/micro-kit包结构目前网关的功能只是做接口转发,所以只有一个 transport 层。代码实现配置文件server: port: 80 mode: debug name: "apigateway" cons...原创 2021-10-04 16:27:16 · 1394 阅读 · 0 评论 -
八,熔断、降级
熔断器 Hystrix-gohystrix-go是用go实现的hystrix版,提供了基础的熔断、降级功能。项目中应用完整代码:https://github.com/Justin02180218/micro-kit在 pkg 下新建目录 circuitbreakers,创建 hystrix.go 文件:代码如下:import "github.com/afex/hystrix-go/hystrix"func Hystrix(commandNam原创 2021-09-29 22:51:20 · 987 阅读 · 1 评论 -
七,服务注册与发现
Consul 介绍服务注册与发现采用 consul 组件,是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案等。Consul使用gossip协议管理成员关系、广播消息到整个集群,他有两个gossip pool(LAN pool和WAN pool),LAN pool是同一个数据中心内部通信的,WAN pool是多个数据中心通信的,LAN pool有多个,WAN pool只有一个。..原创 2021-09-25 12:12:45 · 1872 阅读 · 0 评论 -
六,令牌桶限流
令牌桶限流在这个图书馆项目中,我们采用令牌桶限流算法,具体原理请参看《分布式高可用-流量控制-1 流控策略》文章。项目中应用完整代码:https://github.com/Justin02180218/micro-kit在 pkg 下新建目录 ratelimits,创建 ratelimit.go 文件:在 go kit 的 endpoint 层进行限流,采用装饰器模式var ErrLimitExceed = errors.New(" R...原创 2021-09-22 22:50:36 · 288 阅读 · 0 评论 -
五,gRPC微服务(library-book-grpc-service)
gRPC微服务 library-book-grpc-service ,书籍管理内部服务。提供书籍管理的 rpc 接口,主要实现了根据用户ID获取书籍列表的功能,用户管理服务通过 GRPC 调用此服务接口。完整代码:https://github.com/Justin02180218/micro-kit包结构各个包的含义与上两篇基本一样,这里就不一一说明了。代码实现gRPC Server编写 book.proto 文件synta...原创 2021-09-19 15:43:49 · 987 阅读 · 0 评论 -
四,书籍管理微服务(library-book-service)
微服务 library-book-service ,书籍管理微服务。提供书籍管理的 Restful 接口,主要实现保存书籍、根据书籍名称查询、书籍列表、用户借书等功能。完整代码:https://github.com/Justin02180218/micro-kit包结构各个包的含义与上一篇 《微服务library-user-service》一样,这里就不一一说明了。代码实现配置文件library-book-service的配置文件 book.yaml 的内容与 us.原创 2021-09-15 23:09:08 · 852 阅读 · 0 评论 -
三,用户管理微服务(library-user-service)
微服务 library-user-service ,用户管理服务。提供用户管理的 Restful 接口,主要实现用户注册、根据用户ID或者 email 查询用户、查询用户所借书籍等功能。完整代码:https://github.com/Justin02180218/micro-kit包结构说明 dao:数据访问层 dto:数据传输层 models:数据库表映射层 service:业务逻辑层 endpoint:go-kit 的概念,将服.原创 2021-09-11 15:21:53 · 8591 阅读 · 0 评论 -
二,基础框架搭建
工程结构首先我们来搭建工程结构,主体分为三个微服务和一个网关,还包括公共组件及部署文件等。如图: deploy:部署文件目录,包括Dockerfile、k8s yaml文件等。 library-apigateway:结合 Consul 实现的网关。 library-book-grpc-service:提供 rpc 接口调用的书籍管理微服务,用于微服务内部之间的调用。 library-book-service:提供 restful .原创 2021-09-08 22:03:31 · 315 阅读 · 2 评论