自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Coding到灯火阑珊的专栏

WX: Coding到灯火阑珊

  • 博客(56)
  • 资源 (2)
  • 收藏
  • 关注

原创 35道Rust面试题

Rust面试题

2023-10-12 22:02:49 1001

原创 Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序

本系列文章首先研究P2P网络的核心概念,然后详细分析libp2p-rust库中的应用实例,为以后开发P2P网络应用程序打好基础。

2022-07-24 15:00:35 1708 3

原创 用Rust实现区块链 - 6 点对点网络(P2P)

本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。

2022-05-10 17:05:00 5179

原创 用Rust实现区块链 - 3 持久化

本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。

2022-04-29 10:17:46 2050

原创 用Rust实现区块链 - 2 工作量证明(PoW)

本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。

2022-04-25 16:08:06 3545

原创 用Rust实现区块链 - 1 区块和区块链

本系列是用Rust实现简单的区块链,包括区块和区块链,工作量证明,交易和UTXO集合,持久化,钱包及用rust-libp2p实现的点对点分布式网络。

2022-04-19 16:33:58 3784

原创 Kubernetes原生api部署微服务5-监听Pod

我们使用Client-go中的informer来监听用户微服务与文章微服务的Pod。

2022-01-24 11:16:19 914

原创 Kubernetes原生api部署微服务4-创建Ingress

Ingress资源提供了从kubernetes集群外部访问集群内部service的HTTP及HTTPS的路由,可以提供负载均衡、SSL/TLS终端和基于名称的虚拟主机等功能。

2022-01-13 16:51:34 233

原创 Kubernetes原生api部署微服务3-创建Configmap

Configmap是kubernetes的一种资源对象,可以将应用的配置信息与容器镜像解耦,即配置信息的修改不需要重新构建容器镜像。

2022-01-09 14:53:35 404

原创 Kubernetes原生api部署微服务2-创建Namespace、Deployment、Service

Client-go是kubernetes官方开源的访问Api Server的客户端,通过Client-go我们可以对kubernetes的资源进行增删改查等操作。

2022-01-04 10:17:26 576

原创 Kubernetes原生api部署微服务1-构建微服务

在使用kubernetes原生api部署微服务前,需要先构建一个微服务系统。我们使用gin框架搭建简单的博客系统,包含2个简单的微服务系统:用户微服务和文章微服务。

2022-01-01 19:28:57 1001

原创 Kubernetes原生api部署微服务系列

在使用 Kubernetes REST API 编写应用程序时,我们不需要自己实现http rest api接口的请求及传输数据的编解码,可以使用Kubernetes官方提供的客户端库来实现。本系列就是使用kubernetes官方开源的客户端client-go调用Api Server的接口来部署微服务。

2021-12-30 12:42:35 785 4

原创 深入学习Go-9 逃逸分析

逃逸分析发生在编译阶段,是指由编译器决定变量被分配在栈区还是堆区。如果分配在栈区,当函数执行完成后内存自动释放;如果分配在堆区,函数执行完成后由垃圾回收机制释放内存。

2021-12-23 10:04:50 456

原创 深入学习Go-8 同步及同步扩展

在Go语言中除了Channel,还提供了一系列同步及扩展原语来保证多个 Goroutine 在访问同一片内存时不会出现数据竞争等问题。

2021-12-20 09:51:38 481

原创 深入学习Go-7 Channel

Go语言实现了CSP的并发编程模式,即不要通过共享内存来通信,而要通过通信来实现内存共享。channel就是各groutine之间通信的管道。

2021-12-15 09:19:08 641

原创 JAVA-技术架构师

技术提升是为了更好的生活、工作,因此在这里除了分享技术文章外,也会发布一些职位信息,希望对大家有所帮助,都能找到称心如意的工作。

2021-12-13 16:22:21 869

原创 深入学习Go-6 defer、panic与recover

Go语言的defer一般用于资源的释放和异常的捕捉,资源释放如关闭文件描述符、关闭数据库链接、释放锁等;异常捕捉需要与recover函数一起配合使用。

2021-12-11 10:47:54 651

原创 深入学习Go-5 反射

反射是指程序在运行时可以访问、检测和修改自身状态和行为的一种能力。本质就是程序在运行期获取对象的类型和内存结构。

2021-12-06 12:51:18 255

原创 区块链-资深技术架构师

技术提升是为了更好的生活、工作,因此在这里除了分享技术文章外,也会发布一些职位信息,希望对大家有所帮助,都能找到称心如意的工作。

2021-12-02 13:13:22 11707

原创 深入学习Go-4 切片

切片,长度是不固定的,当容量不足时,进行动态扩容,所以又叫动态数组。

2021-12-02 09:39:21 641

原创 深入学习Go-3 数组

数组是由相同类型的元素组成的集合,在内存中分配了一片连续的区域,初始化时需要指定长度。

2021-11-29 09:22:22 642

原创 深入学习Go-2 字符串

字符串是一种重要的数据结构,是编程语言的基础数据类型。

2021-11-26 08:54:01 175

原创 深入学习Go-1 基本数据类型及大数计算

基本数据类型及大数计算

2021-11-23 10:13:46 1102

原创 十二,构建Docker镜像

通过前面的十一篇文章,我们基于Go-kit微服务框架建立了图书馆借书项目,包括三个微服务、一个网关、限流、服务注册与发现、熔断降级、监控和分布式链路追踪。接下来我们将微服务构建成 docker 镜像,在容器中启动服务。完整代码:https://github.com/Justin02180218/micro-kit编写Dockerfile创建 deploy/docker 目录,在此目录下编写 Dockerfile 文件,如图:构建 user-service 镜像创建 .

2021-10-23 10:17:41 236

原创 十三,部署微服务到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 2231

原创 十一,微服务监控

监控 PROMETHEUSPrometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB),使用Go语言开发,是Google BorgMon监控系统的开源版本。prometheus存储的是时序数据,即按相同时序(相同名称和标签),以时间维度存储连续的数据的集合。项目中应用完整代码:https://github.com/Justin02180218/micro-kit配置文件prometheus: namespace: "library"

2021-10-10 11:10:50 676

原创 十,分布式链路追踪

链路追踪 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 1315

原创 九,自写网关(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 1384

原创 八,熔断、降级

熔断器 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 975 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 1855

原创 六,令牌桶限流

令牌桶限流在这个图书馆项目中,我们采用令牌桶限流算法,具体原理请参看《分布式高可用-流量控制-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 278

原创 五,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 974

原创 四,书籍管理微服务(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 823

原创 三,用户管理微服务(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 8572

原创 二,基础框架搭建

工程结构首先我们来搭建工程结构,主体分为三个微服务和一个网关,还包括公共组件及部署文件等。如图: deploy:部署文件目录,包括Dockerfile、k8s yaml文件等。 library-apigateway:结合 Consul 实现的网关。 library-book-grpc-service:提供 rpc 接口调用的书籍管理微服务,用于微服务内部之间的调用。 library-book-service:提供 restful .

2021-09-08 22:03:31 311 2

原创 一,项目介绍与架构

项目介绍微服务架构实战系列实现一个简单的图书馆项目,只是为了验证、实现微服务的各项能力。此项目划分为三个微服务:如图: 用户管理服务:提供用户管理的 Restful 接口,主要实现用户注册、根据用户ID或者 email 查询用户、查询用户所借书籍等功能。 书籍管理服务:提供书籍管理的 Restful 接口,主要实现保存书籍、根据书籍名称查询、书籍列表、用户借书等功能。 书籍管理内部服务:提供书籍管理的 rpc 接口,由用户管理服务通过 GRPC 调用此服务接口,主要实现

2021-09-05 17:51:41 593

原创 预告:微服务架构实战

近期准备写关于微服务架构实战的系列文章,基于Go语言,结合Gin web框架和Go-kit微服务框架。内容包括限流、服务注册与发现、熔断降级、监控和分布式链路追踪、构建docker镜像,部署发布到k8s中。目录:一,项目介绍与架构二,基础框架搭建三,微服务library-user-service四,微服务library-book-service五,微服务library-book-grpc-service六,限流七,服务注册与发现八,熔断、降级九,网关library

2021-09-04 23:17:58 118 2

原创 分布式高可用-负载均衡-3 一致性哈希(有限负载、虚拟节点)

一致性哈希先构造一个长度为2^32的一致性Hash环,根据服务器节点地址(ip+port)的Hash值将服务器节点映射到这个Hash环上,然后根据用户请求的Key值(用户ID)计算得到其Hash值,接着在Hash环上按顺时针或逆时针查找距离这个Key值的Hash值最近的服务器节点,由该服务器节点处理此次用户请求。如图:一致性哈希是对普通哈希的改进,有效的解决了稳定性的问题。当服务器节点加入或退出时,只影响该节点在哈希环上顺时针相邻的后继节点。即当加入一个服务器节点时,原来分配到后继节点的一部

2020-07-02 09:33:40 645

原创 分布式选举-ZAB算法-2 Leader选举 代码实现

ZAB Leader选举实现设定集群中有3个节点,通过ZAB算法实现选主。节点之间的通信使用的是自我实现的Remoting组件,基于Netty开发,可以以同步,异步的方式发起通信。在后续《分布式通信》系列的文章中,会向大家详细分析Remoting组件。分布式选举的项目名称:justin-distribute-election整体结构如图:主要Package说明:callback:异步请求消息的回调处理器集合client:数据存取接口message:投票、心跳等消息..

2020-05-18 14:35:05 656

原创 分布式选举-ZAB算法-1 Leader选举 原理

ZAB(Zookeeper Atomic Broadcast)算法是Zookeeper为了实现分布式协调及数据一致性而设计的算法。相对于Raft算法,ZAB算法除了投票机制,还增加了节点ID和数据ID的比较来优先选主。此系列文章先来分析ZAB Leader选举的原理及实现,在后续《分布式数据复制》的系列文章中,我们再回过头来实现ZAB算法的分布式数据复制功能。Leader选举:选举原则:在同一任职周期内,节点的数据ID越大,表示该节点的数据越新,数据ID最大的节点优先被投票。所有节点..

2020-05-11 16:38:11 1011

HyperLedger Fabric开发实战——快速掌握区块链技术-配套资源.zip

HyperLedger Fabric开发实战——快速掌握区块链技术-配套资源, HyperLedger Fabric开发实战——快速掌握区块链技术-配套资源

2020-06-26

跨网段获取远程主机MAC地址的方法与java实现

跨网段获取远程主机MAC地址的方法与java实现

2013-03-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除