Golang 中的测试
长期以来,有时候会不重视测试,尤其是赶项目时间的时候,而近来自己可以规划的时间多了之后,就开始想,如何才能把测试做好。
在这个实践测试的过程中,我也开始对一些设计原则有了更深一步的理解与思考。
杰出的开发者每编码一小时,就会花上两小时进行测试。 – Bruce Rosenblum, Disney-ABC TV Group President Of Business Operations
长期以来,有时候会不重视测试,尤其是赶项目时间的时候,而近来自己可以规划的时间多了之后,就开始想,如何才能把测试做好。
在这个实践测试的过程中,我也开始对一些设计原则有了更深一步的理解与思考。
杰出的开发者每编码一小时,就会花上两小时进行测试。 – Bruce Rosenblum, Disney-ABC TV Group President Of Business Operations
错误处理在编程处理中,可谓是最重要也是最伤脑筋的一块内容,因为在绝大多数情况下,正确的途径只有几条,而剩下的几十上百种的情况便都是错误了,不同意?编译原理中提到的编译器了解下 :P 。
数据流的概念其实非常基础,最早是在通讯领域使用的概念,这个概念最初在 1998 年由 Henzinger 在文献 87 中提出,他将数据流定义为 “只能以事先规定好的顺序被读取一次的数据的一个序列”。[1]
在上一篇的 gRPC 的介绍以及实践 中,而在文末,我简单介绍了给 Node.js 做的 grpc-helper,但是现在,我觉得得用一篇完整的博客来好好介绍,毕竟还是想要给大家用的,以下我会介绍我实现这个工具的过程,以及我的一些实现思路。
在两年前,我提到了怎么去做 API 文档,这在这两年来以来效果不错,问题有,只是都不是很大,因为我们内部都已经形成了习惯。
但是,情况开始变化,尤其是在被 CTO 骂了之后。
gRPC 是个通用、高性能的开源 RPC 框架。它可以高效地连接单个或多个数据中心的服务。另外也可以支持可插拔的负载均衡、追踪、健康检查以及认证。最后,它也能应用于分布式计算的最后一公里来连接各种设备、手机应用、浏览器与后端服务。[1]
这里可以留意下最后一句话,这句话的意思是:你可以使用 gRPC 来取代现有的 RESTful 接口。事实上,已经有很多案例这么做了:以关键词『gRPC iOS』或者『gRPC Android』去 Google 一下就会发现很多案例。
首先,从我们最常见的『安全』网站来说。
我们在 Chrome 浏览器中(其它浏览器类似),假如浏览的是 https 开头的网站,会发现开头会是绿色的:『🔒安全』 字样,点击之后,会有个小悬浮窗口就会告诉你『连接是安全的』,浮窗下面会有三个选项:『证书、Cookies、站点设置』,继续点击证书,就会弹出一个窗口,里面大概会提到这个证书所对应的网址、有效期等。
以 GitHub 的为例:
www.github.com
Issued by: DigiCert SHA2 High Assurance Server CA
Expires: Saturday, June 20, 2020 at 20:00:00 China Standard Time
你看到的正是 HTTPS 协议所需要的 SSL 证书。
好了,作为好学的你,现在应该有几个问题了吧,不急,慢慢看。
API 网关是目前非常成熟的一种微服务与外界通讯方式的一种选型,当前你的架构是从单体架构 Monolithic
迁移过来的时候,你会发现新的服务无法很好地从旧有系统中接管流量。
这个接管,或者说迁移的过程很复杂,也很危险,一般我们也会从小流量的非核心服务开始拆,拆分完之后,你就会发现问题了:流量怎么导到新服务上面去呢?