自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

聪米的博客

qq180782842

  • 博客(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 421

原创 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 388

原创 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 881 2

原创 关于基于etcd服务的开发记录

以etcd作为持久化服务的开发与传统基于关系型数据库的开发有所区别,与基于redis的开发也不同,以下作记录:使用etcdctl·可以,etcd

2019-11-19 17:47:11 601

原创 关于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 395

原创 Go channel 的使用注意项记录

Golang的定义了goroutine间通信的规范,其中对channel的操作有若干注意项。现整理出来并最后结合go channel的实现原理来解释。make 和 close channel若使用 channel 之前没有 make,会出现 dead lock 错误。如果没有设置容量,或者容量设置为0, 说明Channel没有缓存,只有sender和receiver都准备好了后它们的通讯才...

2019-10-16 17:15:37 182

原创 关于golang http 中间件的记录

关于golang 的http中间件与java, python等有区别, 特别是自go 引入了context概念之后,在实际开发中也遇到过不少问题, 以下作记录:不同的开发框架如net/http, chi, iris, 其中间件写法大同小异, 均返回http.Handler,(因此在go webservice迭代开发过程中,框架切换比较轻松),类似:func exampleMiddlewa...

2019-10-15 15:46:12 599

原创 关于Kubernetes调度特定应用的记录

Kubernetes 提供可拓展的容器调度功能:用户可以对接不同的container runtime, 其中最常用的是docker。用户可以在docker内封装隔离各类进程应用 。因此, kubernetes可以调度和部署一系列web服务等app, 也可以部署分布式应用, 计算密集型应用如Spark和Tensorflow等,这取决于开发者的部署配置和docker镜像内容等。下文记录一些...

2019-09-29 16:46:48 99

原创 Golang websocket服务端实现注意点记录

在工作生产中,很多业务需要用到websocket作为前后端之间交互的方式, 以下总结一些遇到的问题及有用链接:认证问题:- 浏览器端的javascript 的websocket建立连接的api较为单一,var aWebSocket = new WebSocket(url [, protocols]);,难以携带与连接本身无关的信息。在initial handshake无法提供自定义的头部信...

2019-09-19 16:17:38 1291

原创 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 502

原创 关于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 2252

原创 关于golang写grpc 服务记录

总结一下用grpc协议写服务的若干心得,并记录一些有用链接。下载grpc依赖及安装grpc代码生成工具, 也可参见该链接创建简单可行的helloworld服务。grpc服务端及客户端均需要保留protoc生成的.pb.go文件作为交互依据。.proto文件指定了grpc服务端和客户端交互的序列化规定,即指定了客户端如何将请求内容序列化成字节, 服务端收到请求字节后也根据.prot...

2019-07-31 18:42:41 1009

原创 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 1756

原创 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 3391

原创 关于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 3664 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 2343 1

原创 容器/Docker要点记录

Docker 的入口程序与Kubernetes的入口程序:Dockerfile 用于制作镜像,可以在文件最后指定ENTRYPOINT作为镜像的入口程序,即pid为1的进程。在Kubernetes用于启动pod的yaml中,也可指定Command和Args作为Docker启动后的入口程序, 即pid为1的进程。若1号进程退出(尽管入口程序派生了其他后台进程),则Docker退出。入口程序...

2019-01-10 16:49:18 794

空空如也

空空如也

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

TA关注的人

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