Go rpcx etcd试用

2020年5月1日 没有评论 258 次浏览

客户端与服务端要进行通信,至少得有一方知道另外一方的地址才行(一般是客户端知道服务端的监听地址),比如在这篇文章http://lenky.info/?p=2840中的101basic示例里,就是在客户端和服务端的代码里直接硬编码(hardcode)了服务器的监听地址(localhost:8972),从而客户端才能请求到服务端的服务。 直观来看,硬编码方式有很大缺点,比如如果服务地址发生变化则需要修改源码进行重新编译或启动。因此,一种改进的办法是服务端将服务地址放到配置文件,而客户端从配置文件中获取到对应的服务地址。基于这种思想,就有了服务注册与服务发现,即服务端(服务提供方)将提供服务的地址注册到服务注册中心,而客户端(服务请求方)则从服务注册中心获取服务地址,这种动态的管理方式无疑更加灵活且更加适应现在的云计算环境。 服务注册中心可以由很多软件来充当这个角色,在极其简单的环境下,文件系统(用配置文件存储服务地址)其实就可以,当然,考虑到高可用与一致性,可以有更好的选择,比如etcd等。 仍然是老套路,下面试用下rpcx结合etcd来做的服务注册与发现示例。 一,测试环境 二,安装Go环境 三,安装rpcx 四,下载测试代码 1,直接安装测试工程 $... [阅读更多]

分类: *nix应用编程, *nix技术 标签: , ,

Go rpcx试用

2020年4月25日 没有评论 395 次浏览

前段时间看了下分布式RPC框架brpc,这两天在找分布式服务框架,也就是除了RPC功能外,期望还能有服务发现和服务治理的功能,经典的开源框架有dubbo,之前据说这货在阿里的团队都解散了(15年),后来又据说开始维护了(17年底。具体见这里:https://www.zhihu.com/question/30884501,https://github.com/apache/dubbo),但我想找个Go语言的类似框架,Google了下,发现有个rpcx(还有些其他框架,比如go-micro等),看上去挺不错,而且是国人开发的,主要贡献者在微博工作(见参考)。 老套路,还是先试用下rpcx。 一,测试环境 $... [阅读更多]

Go iris试用

2020年4月25日 没有评论 371 次浏览

打算试用下Go iris框架,因为据说在各个方面iris都表现不错,比如性能,MVC支持,HTTP2.0支持等,具体见这里:https://github.com/speedwheel/awesome-go-web-frameworks 总之,先试用下吧。 一,测试环境 $ cat... [阅读更多]

nginx unit源码中的有趣宏

2020年4月18日 没有评论 409 次浏览

最近在翻看nginx unit的源码,之所以对这个玩意感兴趣主要是据有大神说nginx... [阅读更多]

Notepad++结合PlantUML进行绘图

2020年4月18日 没有评论 397 次浏览

做软件开发难免要画图,比如时序图、活动图、状态图,类图等,以前画图用Visio,亿图,最近有同事开始使用PlantUML工具来画这些图,看起来简直是方便极了。 PlantUML是个开源项目,不用担心授权问题,而其本质上是一个支持快速画图的设计语言,学习难道不大,可以在官网体验一下:https://plantuml.com/zh/ 类似的工具有Mermaid,可以参考: 官网地址:https://mermaidjs.github.io/ 项目地址:https://github.com/knsv/mermaid... [阅读更多]

分类: *nix技术 标签: , ,

招聘

2020年3月31日 5 条评论 65,186 次浏览

深信服科技招聘 招各类IT技术人才: 岗位一:Linux开发工程师 技能要求:熟悉C、C++、Python任一语言,熟悉Linux下的网络编程或应用开发。 经验要求:1年以上的工作经验,或大三大四实习生 岗位二:Windows开发工程师 技能要求:精通C、C++语言、Python,熟悉Windows下的驱动开发或Windows下的应用开发。 经验要求:1年以上的工作经验... [阅读更多]

分类: 生活点滴 标签:

nginx unit试用

2020年3月28日 没有评论 994 次浏览

一,测试环境 $ cat /etc/issue Ubuntu 18.04.3 LTS \n \l $ uname -a Linux lenky-virtual-machine 5.0.0-27-generic #28~18.04.1-Ubuntu SMP Thu Aug 22 03:00:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux 二,下载源码 $ curl -O... [阅读更多]

WebAssembly试用

2020年3月28日 没有评论 588 次浏览

2019年12月份,W3C宣布WebAssembly核心规范成为正式的Web标准,这表示在继HTML、CSS和JavaScript之后,WebAssembly正式成为第四个可在浏览器中原生运行的语言。当然,更确切点说,WebAssembly是一份字节码标准,需要用其他高级语言编译出对应字节码才能放到WebAssembly虚拟机中运行,各个浏览器厂商需要做的是根据WebAssembly规范实现其虚拟机。 这听上去,WebAssembly和Java... [阅读更多]

braft试用

2020年3月22日 没有评论 704 次浏览

raft是一个分布式一致性复制协议算法,其基本功能就是可以实现在多个进程之间对某个(某些)值达成强一致性,前面文章介绍的Zookeeper和Etcd就利用了raft(以及类似协议zab、paxos等)。而braft是百度实现的基于brpc的raft协议工业级C++实现,抛开各种理论说明不谈,只需知道利用braft可以帮助解决分布式系统中的数据一致性以及延伸问题,比如: 1,分布式锁:锁信息的一致性 2,分布式存储:存储数据的一致性 3,主备高可用:元数据的一致性 等等。 除了braft,自然还有很多其他的raft的实现,比如SOFAJRaft等,具体见备注。下面就主要试用一下braft。 一,测试环境 $... [阅读更多]

配置中心

2020年3月21日 没有评论 529 次浏览

所谓集群,就是将部署在多个服务器上的相同应用集合在一起做同一件事情。因此,集群首先要解决的问题就是如何将多个服务器主机上的应用进行统一的管理,达到从外面看来就像是只有一个服务器主机在跑应用一样,这就要求集群系统必须具备全局信息的管理能力。比如应用程序的运行一般总是依赖一些配置信息,不可能让用户对集群里的每台主机去做单独的配置,而是由集群系统自动实现配置信息的全局同步,直接点说就是需要一个配置中心进行统一管理。 配置中心的主要作用是维护一致性信息,实现集群各主机的协调管理,因此其不仅仅只是用来存储共享配置,还可以用来存储其他各种公共的信息,比如服务信息,因此就可以实现服务注册和服务发现;比如锁信息,从而提供分布式锁机制等等。当前主流配置中心一般都包括配置管理、集群成员管理、命名服务、任务分配、心跳检测、分布式锁等功能。 当前社区可选的优秀开源有Zookeeper和Etcd,下面简单看一下。 1,Zookeeper 官网:http://zookeeper.apache.org/ Zookeeper起源于Hadoop,后来进化为Apache的顶级项目。现在已经被广泛使用在Apache的项目中,例如Hadoop,Kafka,Solr等等。 Zookeeper是Java写的,因此依赖Java环境,客户端官方语音支持C、Java,但GitHub上可以搜索到其他语言的客户端实现。 2,Etcd 官网:https://etcd.io/ Etcd是用go语言开发的,Etcd官方提供有Go语言和Java语言的SDK。 Etcd出现的时间并不长,但前景貌似非常好,在Kubernetes的kube... [阅读更多]