从简单到强大:再次探索Caddy服务器的魅力

本文永久链接 – https://tonybai.com/2024/11/07/exploring-caddy Go语言诞生十多年来,社区涌现出众多优秀的Web服务器和反向代理解决方案。其中,最引人注目的无疑是Caddy和Traefik。这两者都为开发者和系统管理员提供了更简单、更安全的现代化Web服务器和反向代理部署选项。尽管它们的目标略有不同,Caddy最初旨在满足开发者快速搭建反向代理的需求,特别关注配置的简易性,并在后期增加了自动HTTPS和全面的API支持;而Traefik则更强调云原生架构,适合基于微服务的应用,尤其是使用Docker或Kubernetes部署的场景,提供动态服务发现和灵活的路由能力。 我于2015年首次体验了开源发布的Caddy,其超简单的配置确实给我留下了深刻的印象。之后也一直关注着Caddy的发展,Caddy在支持通过ACME协议自动为服务的域名获取免费HTTPS证书的功能后,Caddy就被我部署在自己的VPS上,为Gopher Daily等站点提供反向代理服务,运行十分稳定。Caddy这一为域名自动获取免费HTTPS证书的功能是其简化站点部署初衷的延续,也为Caddy赢得的广泛的用户和赞誉,并且这一特性不仅使得Caddy在个人项目和小型部署中大受欢迎,也让它在企业级应用中占有一席之地。 ...

November 7, 2024 · 22 min · Tony Bai

gRPC客户端的那些事儿

本文永久链接 – https://tonybai.com/2021/09/17/those-things-about-grpc-client 在云原生与微服务主导架构模式的时代,内部服务间交互所采用的通信协议选型无非就是两类:HTTP API(RESTful API)和RPC。在如今的硬件配置与网络条件下,现代RPC实现的性能一般都是好于HTTP API的。我们以json over http与gRPC(insecure)作比较,分别使用ghz和hey压测gRPC和json over http的实现,gRPC的性能(Requests/sec: 59924.34)要比http api性能(Requests/sec: 49969.9234)高出20%。实测gPRC使用的protobuf的编解码性能更是最快的json编解码的2-3倍,是Go标准库json包编解码性能的10倍以上(具体数据见本文附录)。 ...

September 17, 2021 · 26 min · Tony Bai

提高您的kubectl生产力(第三部分):集群上下文切换、使用别名减少输入和插件扩展

本文翻译自《Boosting your kubectl productivity》。 第一部分:什么是kubectl? 第二部分:命令完成、资源规范快速查看和自定义列输出格式什么是kubectl? 4. 轻松切换集群和名称空间 当kubectl必须向Kubernetes API发出请求时,它会读取系统上所谓的kubeconfig文件,以获取它需要访问的所有连接参数并向API服务器发出请求。 ...

August 31, 2019 · 15 min · Tony Bai

提高您的kubectl生产力(第二部分):命令完成、资源规范快速查看和自定义列输出格式

本文翻译自《Boosting your kubectl productivity》。 第一部分:什么是kubectl? 1. 通过命令完成(command completion)减少输入 命令完成是提高你的kubectl生产力的最有用但经常被忽视的技巧之一。 ...

August 30, 2019 · 10 min · Tony Bai

提高您的kubectl生产力(第一部分):什么是kubectl

本文翻译自《Boosting your kubectl productivity》。 如果您使用Kubernetes,那么kubectl可能是您最常用的工具之一。每当您花费大量时间使用某种特定工具时,值得深入了解并了解如何有效地使用它。 本文包含一系列提示和技巧,使您对kubectl的使用更加高效和有效。同时,它旨在加深您对Kubernetes各方面工作的理解。 ...

August 29, 2019 · 7 min · Tony Bai

使用istio治理微服务入门

近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务。再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设计的首选。 但微服务化易弄,服务治理难搞! 一、微服务的“痛点” 微服务化没有统一标准,多数是进行业务领域垂直切分,业务按一定的粒度划分职责,并形成清晰、职责单一的服务接口,这样每一块规划为一个微服务。微服务之间的通信方案相对成熟,开源领域选择较多的有RPC或RESTful API方案,比如:gRPC、apache thrift等。这些方案多偏重于数据如何打包、传输与解包,对服务治理的内容涉及甚少。 ...

January 3, 2018 · 15 min · Tony Bai

Kubernetes集群中Service的滚动更新

在移动互联网时代,消费者的消费行为已经“全天候化”,为此,商家的业务系统也要保持7×24小时不间断地提供服务以满足消费者的需求。很难想像如今还会有以“中断业务”为前提的服务系统更新升级。如果微信官方发布公告说:每周六晚23:00~次日凌晨2:00进行例行系统升级,不能提供服务,作为用户的你会怎么想、怎么做呢?因此,各个平台在最初设计时就要考虑到服务的更新升级问题,部署在Kubernetes集群中的Service也不例外。 ...

February 9, 2017 · 15 min · Tony Bai

使用go-ceph管理Ceph RBD映像

在《使用Ceph RBD为Kubernetes集群提供存储卷》一文中,我们了解到,在Kubernetes和ceph的集成过程中,有一个步骤是需要手动操作的,那就是创建ceph osd pool下面的rbd image。我们需要想办法去除这一手动步骤。关于方案,我们首先想到的就是是否可以调用Ceph提供的REST API来管理rbd的pool和image? ...

November 9, 2016 · 4 min · Tony Bai

部署私有Docker Registry

安装部署一个私有的Docker Registry是引入、学习和使用Docker这门技术的必经之路之一。尤其是当Docker被所在组织接受,更多人、项目和产品开始接触和使用Docker时,存储和分发自制的Docker image便成了刚需。Docker Registry一如既往的继承了“Docker坑多”的特点,为此这里将自己搭建”各类”Registry过程中执行的步骤、遇到的问题记录下来,为己备忘,为他参考。 ...

February 26, 2016 · 10 min · Tony Bai

weed-fs使用简介

weed-fs,全名Seaweed-fs,是一种用golang实现的简单且高可用的分布式文件系统。该系统的目标有二: - 存储billions of files - serve the files fast weed-fs起初是为了搞一个基于Fackbook的Haystack论文的实现,Haystack旨在优化Fackbook内部图片存储和获取。后在这个基 础上,weed-fs作者又增加了若干feature,形成了目前的weed-fs。 ...

August 22, 2015 · 24 min · Tony Bai