- 博客(56)
- 资源 (2)
- 收藏
- 关注
原创 Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序
本系列文章首先研究P2P网络的核心概念,然后详细分析libp2p-rust库中的应用实例,为以后开发P2P网络应用程序打好基础。
2022-07-24 15:00:35 1894 3
原创 用Rust实现区块链 - 6 点对点网络(P2P)
本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。
2022-05-10 17:05:00 5384
原创 用Rust实现区块链 - 3 持久化
本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。
2022-04-29 10:17:46 2187
原创 用Rust实现区块链 - 2 工作量证明(PoW)
本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。
2022-04-25 16:08:06 3632
原创 用Rust实现区块链 - 1 区块和区块链
本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。
2022-04-19 16:33:58 3933
原创 Kubernetes原生api部署微服务4-创建Ingress
Ingress资源提供了从kubernetes集群外部访问集群内部service的HTTP及HTTPS的路由,可以提供负载均衡、SSL/TLS终端和基于名称的虚拟主机等功能。
2022-01-13 16:51:34 259
原创 Kubernetes原生api部署微服务3-创建Configmap
Configmap是kubernetes的一种资源对象,可以将应用的配置信息与容器镜像解耦,即配置信息的修改不需要重新构建容器镜像。
2022-01-09 14:53:35 426
原创 Kubernetes原生api部署微服务2-创建Namespace、Deployment、Service
Client-go是kubernetes官方开源的访问Api Server的客户端,通过Client-go我们可以对kubernetes的资源进行增删改查等操作。
2022-01-04 10:17:26 621
原创 Kubernetes原生api部署微服务1-构建微服务
在使用kubernetes原生api部署微服务前,需要先构建一个微服务系统。我们使用gin框架搭建简单的博客系统,包含2个简单的微服务系统:用户微服务和文章微服务。
2022-01-01 19:28:57 1032
原创 Kubernetes原生api部署微服务系列
在使用 Kubernetes REST API 编写应用程序时,我们不需要自己实现http rest api接口的请求及传输数据的编解码,可以使用Kubernetes官方提供的客户端库来实现。本系列就是使用kubernetes官方开源的客户端client-go调用Api Server的接口来部署微服务。
2021-12-30 12:42:35 813 4
原创 深入学习Go-9 逃逸分析
逃逸分析发生在编译阶段,是指由编译器决定变量被分配在栈区还是堆区。如果分配在栈区,当函数执行完成后内存自动释放;如果分配在堆区,函数执行完成后由垃圾回收机制释放内存。
2021-12-23 10:04:50 498
原创 深入学习Go-8 同步及同步扩展
在Go语言中除了Channel,还提供了一系列同步及扩展原语来保证多个 Goroutine 在访问同一片内存时不会出现数据竞争等问题。
2021-12-20 09:51:38 521
原创 深入学习Go-7 Channel
Go语言实现了CSP的并发编程模式,即不要通过共享内存来通信,而要通过通信来实现内存共享。channel就是各groutine之间通信的管道。
2021-12-15 09:19:08 720
原创 JAVA-技术架构师
技术提升是为了更好的生活、工作,因此在这里除了分享技术文章外,也会发布一些职位信息,希望对大家有所帮助,都能找到称心如意的工作。
2021-12-13 16:22:21 895
原创 深入学习Go-6 defer、panic与recover
Go语言的defer一般用于资源的释放和异常的捕捉,资源释放如关闭文件描述符、关闭数据库链接、释放锁等;异常捕捉需要与recover函数一起配合使用。
2021-12-11 10:47:54 678
原创 区块链-资深技术架构师
技术提升是为了更好的生活、工作,因此在这里除了分享技术文章外,也会发布一些职位信息,希望对大家有所帮助,都能找到称心如意的工作。
2021-12-02 13:13:22 11774
原创 十二,构建Docker镜像
通过前面的十一篇文章,我们基于Go-kit微服务框架建立了图书馆借书项目,包括三个微服务、一个网关、限流、服务注册与发现、熔断降级、监控和分布式链路追踪。接下来我们将微服务构建成 docker 镜像,在容器中启动服务。完整代码:https://github.com/Justin02180218/micro-kit编写Dockerfile创建 deploy/docker 目录,在此目录下编写 Dockerfile 文件,如图:构建 user-service 镜像创建 .
2021-10-23 10:17:41 258
原创 十三,部署微服务到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 2294
原创 十一,微服务监控
监控 PROMETHEUSPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),使用Go语言开发,是Google BorgMon监控系统的开源版本。prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。项目中应用完整代码:https://github.com/Justin02180218/micro-kit配置文件prometheus: namespace: "library"
2021-10-10 11:10:50 705
原创 十,分布式链路追踪
链路追踪 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 1347
原创 九,自写网关(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 1414
原创 八,熔断、降级
熔断器 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 1024 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 1885
原创 六,令牌桶限流
令牌桶限流在这个图书馆项目中,我们采用令牌桶限流算法,具体原理请参看《分布式高可用-流量控制-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 311
原创 五,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 1008
原创 四,书籍管理微服务(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 908
原创 三,用户管理微服务(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 8616
原创 二,基础框架搭建
工程结构首先我们来搭建工程结构,主体分为三个微服务和一个网关,还包括公共组件及部署文件等。如图: deploy:部署文件目录,包括Dockerfile、k8s yaml文件等。 library-apigateway:结合 Consul 实现的网关。 library-book-grpc-service:提供 rpc 接口调用的书籍管理微服务,用于微服务内部之间的调用。 library-book-service:提供 restful .
2021-09-08 22:03:31 335 2
原创 一,项目介绍与架构
项目介绍微服务架构实战系列实现一个简单的图书馆项目,只是为了验证、实现微服务的各项能力。此项目划分为三个微服务:如图: 用户管理服务:提供用户管理的 Restful 接口,主要实现用户注册、根据用户ID或者 email 查询用户、查询用户所借书籍等功能。 书籍管理服务:提供书籍管理的 Restful 接口,主要实现保存书籍、根据书籍名称查询、书籍列表、用户借书等功能。 书籍管理内部服务:提供书籍管理的 rpc 接口,由用户管理服务通过 GRPC 调用此服务接口,主要实现
2021-09-05 17:51:41 642
原创 预告:微服务架构实战
近期准备写关于微服务架构实战的系列文章,基于Go语言,结合Gin web框架和Go-kit微服务框架。内容包括限流、服务注册与发现、熔断降级、监控和分布式链路追踪、构建docker镜像,部署发布到k8s中。目录:一,项目介绍与架构二,基础框架搭建三,微服务library-user-service四,微服务library-book-service五,微服务library-book-grpc-service六,限流七,服务注册与发现八,熔断、降级九,网关library
2021-09-04 23:17:58 140 2
原创 分布式高可用-负载均衡-3 一致性哈希(有限负载、虚拟节点)
一致性哈希先构造一个长度为2^32的一致性Hash环,根据服务器节点地址(ip+port)的Hash值将服务器节点映射到这个Hash环上,然后根据用户请求的Key值(用户ID)计算得到其Hash值,接着在Hash环上按顺时针或逆时针查找距离这个Key值的Hash值最近的服务器节点,由该服务器节点处理此次用户请求。如图:一致性哈希是对普通哈希的改进,有效的解决了稳定性的问题。当服务器节点加入或退出时,只影响该节点在哈希环上顺时针相邻的后继节点。即当加入一个服务器节点时,原来分配到后继节点的一部
2020-07-02 09:33:40 696
原创 分布式选举-ZAB算法-2 Leader选举 代码实现
ZAB Leader选举实现设定集群中有3个节点,通过ZAB算法实现选主。节点之间的通信使用的是自我实现的Remoting组件,基于Netty开发,可以以同步,异步的方式发起通信。在后续《分布式通信》系列的文章中,会向大家详细分析Remoting组件。分布式选举的项目名称:justin-distribute-election整体结构如图:主要Package说明:callback:异步请求消息的回调处理器集合client:数据存取接口message:投票、心跳等消息..
2020-05-18 14:35:05 685
原创 分布式选举-ZAB算法-1 Leader选举 原理
ZAB(Zookeeper Atomic Broadcast)算法是Zookeeper为了实现分布式协调及数据一致性而设计的算法。相对于Raft算法,ZAB算法除了投票机制,还增加了节点ID和数据ID的比较来优先选主。此系列文章先来分析ZAB Leader选举的原理及实现,在后续《分布式数据复制》的系列文章中,我们再回过头来实现ZAB算法的分布式数据复制功能。Leader选举:选举原则:在同一任职周期内,节点的数据ID越大,表示该节点的数据越新,数据ID最大的节点优先被投票。所有节点..
2020-05-11 16:38:11 1100
HyperLedger Fabric开发实战——快速掌握区块链技术-配套资源.zip
2020-06-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人