- 博客(17)
- 收藏
- 关注
原创 Discovery Service in Serice Mesh
OverviewDiscovery Service is a classical operational problem that is becoming bothering as the micro-service architecture has been widely adopt. One of the driver for Service Mesh framework is to add...
2020-03-20 15:52:16
475
原创 Service Mesh Sidecar Proxy Comparison
Linkerd2-proxy is an opensource service proxy designed to address service mesh communcation issues. While it is written in Rust, its peer and competitor, Envoy is written C++, which has been adopt by...
2020-03-17 17:38:33
405
原创 Kubernetes Source Code Analysis
Recently, I have been assigned to implement a task manage system based on etcd storage backend. Some of its design and implmentation are inspired by Kubernetes.As a Go developer, dealing with Kube...
2020-02-08 14:31:30
947
2
原创 关于基于etcd服务的开发记录
以etcd作为持久化服务的开发与传统基于关系型数据库的开发有所区别,与基于redis的开发也不同,以下作记录:使用etcdctl·可以,etcd
2019-11-19 17:47:11
616
原创 关于golang pprof的使用记录
The post is to illustrate issues encountered during a web service debug/inspection process using pprof. Even though your http api server may not has obvious latency, it is worth digging deeper of it ...
2019-10-26 16:25:21
413
原创 Go channel 的使用注意项记录
Golang的定义了goroutine间通信的规范,其中对channel的操作有若干注意项。现整理出来并最后结合go channel的实现原理来解释。make 和 close channel若使用 channel 之前没有 make,会出现 dead lock 错误。如果没有设置容量,或者容量设置为0, 说明Channel没有缓存,只有sender和receiver都准备好了后它们的通讯才...
2019-10-16 17:15:37
196
原创 关于golang http 中间件的记录
关于golang 的http中间件与java, python等有区别, 特别是自go 引入了context概念之后,在实际开发中也遇到过不少问题, 以下作记录:不同的开发框架如net/http, chi, iris, 其中间件写法大同小异, 均返回http.Handler,(因此在go webservice迭代开发过程中,框架切换比较轻松),类似:func exampleMiddlewa...
2019-10-15 15:46:12
610
原创 关于Kubernetes调度特定应用的记录
Kubernetes 提供可拓展的容器调度功能:用户可以对接不同的container runtime, 其中最常用的是docker。用户可以在docker内封装隔离各类进程应用 。因此, kubernetes可以调度和部署一系列web服务等app, 也可以部署分布式应用, 计算密集型应用如Spark和Tensorflow等,这取决于开发者的部署配置和docker镜像内容等。下文记录一些...
2019-09-29 16:46:48
113
原创 Golang websocket服务端实现注意点记录
在工作生产中,很多业务需要用到websocket作为前后端之间交互的方式, 以下总结一些遇到的问题及有用链接:认证问题:- 浏览器端的javascript 的websocket建立连接的api较为单一,var aWebSocket = new WebSocket(url [, protocols]);,难以携带与连接本身无关的信息。在initial handshake无法提供自定义的头部信...
2019-09-19 16:17:38
1320
原创 Go orm在实际生产中遇到的若干问题
就golang而言, 有若干常用orm 库, 如gorm, sqlx等, 在这里总结一下在生产中遇到的问题:sqlx:1)对于一些经过中间件处理的mysql数据库,即直接访问的实体不是mysql本身, 对于这类数据库实体, 有可能不支持prepare 命令类型。 PREPARE stmt FROM `SELECT * FROM xxx WHERE report_time>=? AN...
2019-09-12 12:25:40
519
原创 关于golang接入Kafka消息队列的记录
总结一下用golang 写的服务中接入kafka消息队列的关键和有用链接:golang 有两个主流接入kafka的lib, sarama和confluent-kafka-go, 在编译运行时均需要用到gcc。构建镜像需要加入apk add build-base关于consumer, consumer group, partition,replicate等关系, 在官网已有图文并茂解释。搭建...
2019-08-19 15:05:39
2270
原创 关于golang写grpc 服务记录
总结一下用grpc协议写服务的若干心得,并记录一些有用链接。下载grpc依赖及安装grpc代码生成工具, 也可参见该链接创建简单可行的helloworld服务。grpc服务端及客户端均需要保留protoc生成的.pb.go文件作为交互依据。.proto文件指定了grpc服务端和客户端交互的序列化规定,即指定了客户端如何将请求内容序列化成字节, 服务端收到请求字节后也根据.prot...
2019-07-31 18:42:41
1034
原创 Kubernetes环境使用Let's Encrypt证书的部署方法
在k8s中将内部service暴露到集群外一般采用ingress,而比较常用的ingress controller是nginx。 而一般证书会存于nginx, 用于tls的认证。采用Let’s Encrypt证书生成浏览器信任的免费证书,并在k8s环境中生效的常用方法有以下:方法1 直接使用certbot, 即支持ACME协议(协议的目的是证明这台机器和域名都是属于你的,然后才准许给你颁发证书)...
2019-06-28 16:31:22
1797
原创 Golang context 实现服务端超时控制记录
golang 官方博文对context的主要设计目的和实践作阐述, 本文结合该博文对服务器端实现超时的方法再作汇总。1 通过设置nginx或后端web server配置实现请求超时router.HandleFunc("/lazy", lazyHandler)router.PathPrefix("/debug/pprof/").Handler(http.DefaultServeMux)ser...
2019-04-03 14:32:38
3530
原创 关于Kubernetes实验及线上环境安装部署
生产环境的kubernetes环境不适合各类测试,因此用台式机的vmware创建了7台虚拟机,用于kubernetes各类配置实验。kubernetes版本:1.3.4ubuntu版本:16.04HA方案:选用与master节点重用的etcd版本CNI:Calico 3.6.1角色主机数量Kube Master10.0.0.129 \130 \1333...
2019-03-18 16:43:16
3713
2
原创 Kubernetes Qos之Requests和Limits的注意项及记录
使用Kubernetes去创建Deployment, StatefulSet和DaemonSet等controller,或直接创建pod时,可设置相关的Requests和Limits,这里有不少地方需要注意,以下作记录和总结。Requests用于pod的调度, kube scheduller使用roundrobin算法将pod调度到满足Requests资源要求的Node上。Limit...
2019-02-19 18:03:27
2379
1
原创 容器/Docker要点记录
Docker 的入口程序与Kubernetes的入口程序:Dockerfile 用于制作镜像,可以在文件最后指定ENTRYPOINT作为镜像的入口程序,即pid为1的进程。在Kubernetes用于启动pod的yaml中,也可指定Command和Args作为Docker启动后的入口程序, 即pid为1的进程。若1号进程退出(尽管入口程序派生了其他后台进程),则Docker退出。入口程序...
2019-01-10 16:49:18
803
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人