2021年1月19日
开发软件日志很重要,不管是应用的标准输出信息,还是主动打印的日志,还是被动的异常信息;都有被记录和整理的需求。大数据从哪里来,很多时候其实是从日志中来的。日志很重要,Go标准库也为日志输出内置了大量实用方法。 标准配置 标准库就提供了这些参数,按需要配置就好了: 1 2 3 4 5 6 7 8 9 10 const ( Ldate = 1 ………
阅读全文
2021年1月14日
现在IT领域都讲大数据、高并发、海量连接等时髦词汇,这些特性的系统在上线之前一定会做大量的测试,今天介绍一些常用的性能测试工具。 先认识几个专有名词: 1、吞吐率(Requests per second) 概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理 ………
阅读全文
2021年1月12日
前面我们学习了并发以及解决并发的常用方式;今天我们看看Go语言实现的三种常用并发模式;这些模式可以在实际生产应用中合理使用,免去了我们造轮子的过程。 我们说过通道的性能并不是太好,这个在大批量循环处理的时候的确有些问题。性能不是关键诉求的场景下还是可以的,他能简化编程。这里讲的三种并发模式,都需要结合使用通道和协程。 Runner 下面给 ………
阅读全文
2021年1月12日
第九篇文章我们学习了Go解决并发编程问题的三种方式。归根结底都是采用加锁,让并发变成同步访问。那么这些处理方式性能如何呢? 先介绍一个Linux下面统计时间的命令time,具体可以参考:https://www.runoob.com/linux/linux-comm-time.html 这里做一个测试,启动两个协程,一个对数执行++操作,一 ………
阅读全文
2021年1月10日
这里我们以简单的NodeJS应用为例,总结一下K8s如何部署应用服务。 Docker打包NodeJS应用 将自己的NodeJS应用打包到Docker中有很多种方法,大家可以参考官方文档: https://nodejs.org/zh-cn/docs/guides/nodejs-docker-webapp/ 下面介绍用最简单的方法打包自己的应 ………
阅读全文
2021年1月8日
DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学。 说的有点玄乎,我们看看DevOps的维基百科定义是这样的: DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障(QA)部门之间的沟通、协作与整合。 软件工程方法论演变 一个软件从零开始到最终交付,大概 ………
阅读全文
2021年1月7日
Go语言SDK内置了很多实用的工具,默认自带了单元测试、基准测试命令;今天我们来看看如何做好单元测试。 什么是单元测试 百度百科:单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个类,图形化的软 ………
阅读全文
2021年1月6日
Go语言SDK内置了很多实用的工具,默认自带了单元测试、基准测试命令;我们先看看基准测试如何使用。 什么是基准测试 百度百科:基准测试是指通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。例如,对计算机CPU进行浮点运算、数据访问的带宽和延迟等指标的基准测试,可以使用户清楚地了解每一 ………
阅读全文
2021年1月3日
开发框架要好用,可扩展性、赋予开发者的介入能力很重要。为此我们设计了一套事件机制,让开发人员能够自由介入每次请求的全生命周期,通过Context携带的资源在事件处理函数间自由翱翔。 生命周期 目前事件设计的还很不合理,跟其它模块关联比较多。思路是这样,以后慢慢调整。 Incoming Request │ └─▶ Routing │ └─▶ ………
阅读全文
2021年1月2日
很多场景中,高效的数据结构都离不开树状结构,什么完全二叉树、红黑树、Radix树、图等好多名词都是具备子孙节点的树状结构,自由灵活的节点内容更让使用者扑朔迷离。一般树都是通过链表来实现,也有通过数组实现的;链表实现自由灵活相对简单,数组实现比较复杂而且不能随意变更节点数量,有其局限性,但是数组实现的内存占用更小更高效。GoFast将采用数……
阅读全文