对七层接入的一些思考

对七层接入的一些思考

做了近两年的七层接入的事情,到月底做一个阶段性的结束.借用一句话, 既往不念,纵情向前.

需要做的事情:

  • 在 openresty 上笔记上记了很多的内容,做一个整理.
  • 把一些技术方面的思路,重新整理成完整的库.

如果拖的时间太久可能会对技术细节的遗忘,懒得在这方面投入经历.

tengine 和 openresty

tengine 是 nginx 的 fork

openresty 是 nginx 的 plugin

两者是不同的技术方向, tengine 的技术方向在 16 年之前非常优秀,但是能不用就不用吧.首先 tengine 在 19 年后就没有在更新维护,相比来说 openresty 的社区活跃得多.

不过今年 tengine 时隔 4 年,今年发布了 2.0.4 的版本,在对 nginx 1.21 openresty 1.21 tengine 2.0.4 的 ocsp 测试中, tengine 的 ocsp 不生效.

去年在查看相关插件时, tengine 对 nginx 的改动几乎没有办法平滑的更新 nginx 的版本. 社区的不活跃也导致 bug 的修复几乎没有.

如果是 nginx 做均衡负载产品,使用 c 技术栈来做由于变化不多,有一定可取性.但是目前大家开始做融合, 均衡负载、网关、mash 做融合,使用 openresty lua 方案要比 c 写组件的方式在开发维护成本要低的多.

apisix 和 kong

apisix 和 kong 两个都是建立在 openresty 上的开源产品, apisix 是在看到了 kong 的缺点后出现的解决方案.我理解的 apisix 优于 kong 的几点:

  • apisix 使用 etcd watch 作为配置下发, kong 使用数据库轮询. ms 级和 s 级的区别.
  • apisix 的路由使用 rds_tree 性能要比 kong 的高很多.
  • apisix 的代码相比 kong 要简洁很多.

作为两个建立在 openresty 生态上的开源产品,相互直接也有很多的借鉴, 比如 apisix 的 dns 服务发现使用的库是 kong 开源的.

在做引擎的替换时,我几乎看完了 apisix 、kong 已经生态上开源库的代码, 为什么说几乎看完呢,首先这个生态和其他开发语言相比,要小众得多,而多数的开源库都是来自 openresty apisix kong 官方,剩下的一小部分来自其他的开发者,另外就是 openresty lua 确实是非常简单.

nginx 和 envoy

我没有用过 envoy ,只是看过相关的文档. 这里的描述可能是错的.

nginx 和 envoy 的架构不同,在性能上实际相差不大,nginx 成熟稳定,enovy 年轻激情.

envoy + wasm / openresty + lua 两种不同的技术栈.

相对来说 openresty 要简单一些. envoy 的配置动态下发方式是 openresty 一大优势,在很多时候我都知在想办法解决怎么才能让 nginx 少 reload 或者不 reload.

envoy 对云原生的支持要比 nginx 优秀. apisix 也在这方面做了很多工作.

日志监控

日志可以看 apisix 的实现,写本地或者使用 tcp 的方式,tcp 的方式可能更好一些,会少一个日志收集组件. 可能会出现丢日志的情况.

监控由于 promehtus 几乎成为了云原生监控的规范.apisix使用的 resty-lua-prometheus 的库使用了单独的进程来做 metrics 输出,原因是 metrics 拉指标存在排序和一些计算,导致内存和 cpu 的异常占用,我通过一些技巧,对此进行重写后,性能非常可观.

GPT最佳实践记录

GPT最佳实践记录

文章来源说明: openai 官方文档,连接查看参考文档

本文只是对官方文档的摘录和学习.

获取更好的结果的六种策略

1. 写清楚说明

  • 在查询种包含详细信息已获得更相关答案
1
2
Prompt:帮我写一个排序函数 
优化后: 使用 golang 编写一个冒泡排序,并解释每一行代码的作用以及为什么这么写
  • 设定角色: 让GPT扮演特定角色,比如很有意思的智囊团
1
假设你是我的智囊团,团内有6个不同的董事做我的教练。6个董事分别是乔布斯、伊隆马斯克、马云、柏拉图、Ray Dalio 和慧能大师,他们都有自己个性、世界观、价值观.对问题有不同的看法、建议和意见。我会在这里说出我的处境和我的决策,请分别以这6个身份,以他们的视角来审视我的决策,给出他们的评判和建议。
  • 使用定界符标记输入的部分:用来清晰的标记不同的输入内容.

三重引号、XML 标记、章节标题等分隔符可以帮助区分要区别对待的文本部分。

1
2
3
4
5
6
7
8
1. 总结引号内的内容 
‘’‘
<需要总结的内容〉
’‘’

2 你将获得一对关于同一主题的文章(用 XML 标记分隔)。先总结一下每篇文章的论点。然后指出他们中的哪一个提出了更好的论点并解释原因。
<article>在这里插入第一篇文章</article>
<article>在这里插入第二篇文章</article>
  • 指定任务完成所需要的步骤;对于复杂任务,把它分解成一系列清晰的步骤,这样GPT会更容易理解。
1
2
3
4
5
使用一下分步响应用户的输入.
第一步:总结引号内的文本,格式为:
[总结]:<总结内容>
第二步:为第一步的总结生成观点
[观点]:<内容>
  • 提供示例;在合适的情况下,提供示例可以让GPT更清楚地了解你的需求。
  • 指定输出所需要的长度
1
用 **大约 50 个单词/两个段落** 总结由三重引号分隔的文本。"""在此插入文本"""

-

2. 提供参考文本

1
2
3
使用由引号分隔的提供的文章来回答问题。如果在文章中找不到答案,写“我找不到答案”。
'''<插入文章,每篇文章用三重引号分隔>'''
问题:<在此处插入问题>

提供参考能够让内容限定在某个范围

1
2
-Prompt:“讲述拿破仑的历史。”
-优化后:“根据史蒂芬·克拉克的书《拿破仑:人生、立场和遗产》,讲述拿破仑的历史。

3. 将复杂的任务拆分为更简单的子任务

处理复杂任务时,将其分解为更简单的子任务通常更有效。这样不仅可以降低错误率,还可以创建一个工作流,其中每个任务建立在前一个任务的结果上。

  • 如果需要大量独立指令处理任务,可以讲指令分为一系列的阶段.
1
2
3
4
5
6
您将收到需要在技术支持环境中进行故障排除的客户服务查询。通过以下方式帮助用户: 
- 要求他们检查所有进出路由器的电缆是否已连接。请注意,电缆随时间松动是很常见的。
- 如果所有电缆都已连接但问题仍然存在,请询问他们使用的是哪种路由器型号 - 现在您将建议他们如何重新启动他们的设备:
- 如果型号是 MTD-327J,建议他们按下红色按钮并按住它 5 秒钟,然后等待 5 分钟,然后再测试连接。
- 如果型号是 MTD-327S,建议他们拔下并重新插入,然后等待 5 分钟,然后再测试连接。
- 如果客户的问题在重启设备并等待 5 分钟后仍然存在,请通过输出 {"IT support requested"} 将他们连接到 IT 支持。
  • 分段总结长文档,并递归构建完整摘要

要总结一个很长的文档,比如一本书,我们可以使用一系列查询来总结文档的每个部分。节摘要可以被连接和总结生成摘要的摘要。这个过程可以递归地进行,直到总结了整个文档。

4. 给 GPT 时间“思考”

将简单的询问,修改为带有 ’思考‘ 的提问

1
2
-Prompt 判断学生的答案是否正确。
-优化后 首先想出你自己解决问题的方法。然后将您的解决方案与学生的解决方案进行比较,并评估学生的解决方案是否正确。在您自己完成问题之前,不要判断学生的解决方案是否正确。

这里有点类似观点3,将问题修改为多个子问题,

1
2
3
4
1. 首先找到自己的答案
2. 将答案和用户的回答对比,评估是否正确
3. 如果用户错误,在不给出答案的情况下,给出提示
4. 如果用户步骤正确,继续执行直到结果正确.

这里也可以做一些限定范围

1
2
-Prompt:“为什么天空是蓝色的?”
-让GPT“思考”的查询:“当我们看天空时,我们通常看到蓝色。这是因为大气和光的相互作用。请从光的散射和大气的组成两个方面,解释为什么天空在大多数情况下呈现蓝色。”

询问模型是否有遗漏内容

1
2
3
4
5
6
7
8
系统:
您将获得一份由三重引号分隔的文件。你的任务是选择与以下问题相关的摘录:“人工智能历史上发生了哪些重大的范式转变。” 确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。以 JSON 格式提供输出,如下所示:[{"excerpt": "..."}, ... {"excerpt": "..."}]
用户:
"""<在此处插入文档>"""
助手:
[{“摘录”:“模型在这里写了一个摘录”},... {“摘录”:“模型在这里写了另一个摘录”}]
用户:
有更多相关的摘录吗?注意不要重复摘录。还要确保摘录包含解释它们所需的所有相关上下文——换句话说,不要提取缺少重要上下文的小片段。

5. 使用外部工具

GPT 提供了一些插件,利用插件可以得到更加准确的结果. 比如时间 、天气、金融数据等.

6. 系统地测试更改

这里我并没有做一些记录,需要明确的是 GPT 是一个语言生成工具,并不是知识生成工具.

它生成的内容可能是胡乱编造的,虽然 GPT4 在这方面做的更好. 但是从原理上讲,是不可避免的,毕竟人类说话也会胡说八道.

所以我们在使用时需要依靠它,让它帮我们完成80%的工作,剩下留给自己,把自己想象成公司的老板,雇佣了一个叫 GPT 的员工.

参考文章

bookmark

2022年了,我还在怀念RSS

很久以前,我习惯用 Google Reader 来订阅各种有趣的独立博客来阅读。后来 Google Reader 关闭了,Google Reader 作为当时最好的 Rss 阅读器,可以快速的获取我感兴趣的内容。当 Google 关闭它后,我尝试了很多替代者,体验都 Google Reader 好。鲜果、抓虾、豆瓣 9 点 后来也关闭了。然后 开始用 inoreader 。

现在大家看视频用抖音,看新闻用头条这种用算法推荐的 app,可能 Rss 是什么已经不知道了。而微信公众打造的所谓的内容池,也只能在微信里面用关注的方式来订阅。

RSS仍然存在,但我怀念它,因为它不像以前那样随处可见了。

很久以前,每个网站都是封闭的。除了去那里,没有办法知道一个网站是否被更新。于是大家想出一种更容易聚合内容的方法,这就是 Rss ,大家都喜欢它并且用它来获取信息。

可能大家都不了解 Rss ,百科的解释是:

RSS(Really Simple Syndication)是一种描述和同步网站内容的格式,是使用最广泛的XML应用。RSS搭建了信息迅速传播的一个技术平台,使得每个人都成为潜在的信息提供者。发布一个RSS文件后,这个RSS Feed中包含的信息就能直接被其他站点调用,而且由于这些数据都是标准的XML格式,所以也能在其他的终端和服务中使用,是一种描述和同步网站内容的格式。

它曾经出现在每一个网络浏览器中,而且所有的主要网站,比如你看到的新闻网站,博客,都提供feeds。然后,你在你的电脑上安装一个feed阅读器,或者直接实用 Google Reader 这种网络的 Rss 阅读器。

这本身并没有什么特别的,但有了RSS,你也可以订阅任何提供feed的新闻网站或博客。这意味着你有一个一站式的服务。你有一个地方可以在你喜欢的网站更新时提醒你。

最流行的博客工具,如WordPress,仍然默认支持了Rss。由于很多的独立博客都是基于它来搭建的,所以很有可能你最喜欢的网站仍然提供RSS。

但是大的网络公司已经对 RSS 不再支持,他们在构建自己的护城河,比如微信公众号,你不能在那里深度的阅读任何的东西,只能蜻蜓点水的刷一刷。

可能是 10 年以前,我很喜欢用遨游浏览器,就是因为它可以很方便的订阅 Rss ,而现在很多浏览器取消的对 Rss 一键订阅的功能,好吧,这事情是 Chrome 干的。我认为是 Google 当时利用自己在搜索和浏览器的垄断地位杀死了 Rss 。

互联网之所以称之为互联网,是它的开放和便捷带来的。有人曾经说过,中国的互联网公司通用的互联互通的接口叫做爬虫。仔细想一想还真是那么回事。

Rss 真的是个非常妙的东西,用一个标准来提醒大家订阅更新了,我不需要去盯着它。也不需要为了获取特定的信息去打开一个特定的网站或者 App。 作为内容提供者,只需要提供好的内容就好。而现在大家都在制造标题党,都在发广告。

我在知乎上偶尔还会看到这样的问题: 202x 年什么 Rss 订阅工具比较好用?

很无奈,国内没有,不是因为做不出来,我看到了好几款订阅工具的出来,也都尝试过。最后都放弃了。不是他们不够好。而是国内内容生产已经都封闭起来了。你找不到好的内容。

也许还有有一些人和我一样,还坚持着使用着 Rss,但是很多年轻人不知道它出现过,只记得 App 里的那个关注按钮。

很可惜,大家只喜欢在社交平台上刷刷刷和手机屏幕里面飘过的老铁 666 。

很可惜,RSS 死了,我还怀念它。

北京小汽车摇号分析

/文章过时/ :摇号和排队已经变化,本文已经不适用。


北京汽车摇号到底是怎么摇的,很多人只知道自己摇了多长时间,倍数是多少。这里我帮大家看了一下。

摇号规则

1、摇号基数序号分配方法:首先,将当期所有审核通过的编码按从小到大的顺序分配序号;然后,第二阶梯及以上的编码按从小到大的顺序,接在后面继续分配序号;再然后,第三阶梯及以上的编码按从小到大的顺序,接在后面继续分配序号;以此类推。因此,高阶梯的编码所对应的多个摇号基数序号是不连号的,当期摇号基数序号总数=第一阶梯人数+第二阶梯人数×2+第三阶梯人数×3…… 2、摇号方法:摇号程序从当期所有摇号基数序号中随机抽取中签者,高阶梯的编码对应多个摇号基数序号,于是享受了多倍的中签概率。摇号程序确保高阶梯编码的多个摇号基数序号最多只能摇中一个,当其中一个摇号基数序号中签,该编码即中签。

看到上面这一段会有点懵,大部分人会被阶梯和乘数搞混乱。 这里我来帮大家解释一下。

阅读更多

android,不折腾

在最开始的时候是打算写 andoird 相关的内容

然而发现其实能够写的东西其实没那么多

对于 android 的一些玩机技巧,在 android 5 的时候

能够说的是什么呢,刷机 、supersu、 xposed 还有一些貌似黑科技的软件

当这些说完了后呢,只能推荐一些好用的软件

作为个人来讲,推荐软件是个很无趣的活

市面上有一大堆的软件推荐网站、公众号、APP

想要选一些小众的,最后会变成效率软件推荐集合

实际上对于刷机和root来说,热情过后就很无趣

在安全的角度来讲,所有需要手机授权root的软件都是流氓软件。

所有自称如何优化了官方软件,改进有多么大的,实际上都没有想象的那么大。

而以牺牲系统安全性为代价的特性,都是不值得的。

为什么你的安全软件需要root权限?

因为如果没有root权限就什么也干不了。

那既然没有root权限什么都干不了

你还要安全软件干什么呢。

曾经就有安全软件利用系统漏洞来标榜自己是不需要root权限的安全软件。

当时觉得很牛逼。真的是牛逼,不需要root系统。小白用户也能很好的使用的安全软件。

只需要一键开启就 ok 了。

实际上呢,作为一个安全软件,不是应该想办法来修复系统漏洞吗。

利用系统漏洞和流氓软件有什么区别。

android 5 的时候,很多地方做的不够好

我们需要去下载一些优化软件,但是现在已经不需要了

你所需要的东西大部分系统厂商都能够提供

你所追求的所谓的效率,仔细统计一下,其实是一个低频的需求

能够花20分钟去打王者,却不能花几秒钟来多做一步操作

人有时候会高估自己的时间价值,有时候又会低估

对于自己手机系统安全性不在意,随意乱给root权限

当然国产软件随意乱索取权限

系统的权限管理已经能够满足我们绝大部分人的需求。

我们在玩机的时候,玩的是什么呢,玩的是折腾

折腾呢很多的Rom,玩了很多的app

最后发现不折腾却是最好的选择

在安卓圈里有魔改系统看不清厂商出品

原始安卓看不起魔改系统

实际上大部分的原生安卓都是魔改的

总是需要这样的或者那样的插件支持

找桌面,找辅助插件,找同步通讯录,找备份

反正就是要吧系统上所有的自带app都要替换掉。

最后还要吧google全家桶也装上

管他有没有用

管他速度怎么样,能不能连上

信仰嘛

我也用google的输入法,chrome

但是 google 只是个商业公司

并不是所有的东西都香

看看 google 关掉的产品

read 、chat、G+ 等待

还是不要折腾,适当替换部分软件

不要用root类的软件

不要乱授权通讯录、电话等权限

好好用厂商提供的版本

节约的时间

去读读书、谈谈朋友

岂不美哉

ps. 看到很多公众号一句话换一行,在这里尝试一下,这种风格很适合杠。想到哪,杠到哪 。