帮助中心 广告联系

灵宝信息网-灵宝天气预报-灵宝教育网-灵宝租房-灵宝新闻网-灵宝生活网

热门关键词:

MacTalk-池建强的随想录(3)

来源:原创/投稿/转载 发布时间:2019-10-03

  项目的「非根本性」目标在很大程度上导致了设计的复杂性,或者导致无法达成其他更重要的目标,因为根本性功能和非根本性功能在设计上存在竞争关系。如果意识不到这点,复杂性就会随之而来。对于设计者来说,如果项目要最大化产出,就要把精力集中在重要的事情上,并在合理的时间内完成。

  简洁性是成败之间最为明显的分界点,理解复杂性的产生过程有助于理解什么是简洁性。不愿意做出设计权衡和设计错误的累积是导致复杂性的两个主要因素。我在第一点里讲的 Internal 其实是提高了复杂度导致用户选择错误。

  完美主义可以分为两种:一种是追求程序极致性能的工程文化,另一种是个人特质。不管是哪一种完美主义,它们都会对程序员实现快速交付造成阻碍。完美主义和对外部评判的恐惧会导致设计上的偏袒,程序员根据主观的心理因素和无关紧要的衡量参数做出设计决策,却忽略了健壮性、简洁性和及时交付。

  在处理复杂任务时,具备一些理论方面的知识会对设计产生重要影响,比如数据结构方面的知识、了解计算能力的局限性和一些重要的算法。虽然程序员没有必要成为无所不知的超级专家,但是至少要知道一些问题的潜在解决方案,避免设计出复杂、缓慢、低内存效能的解决方案。

  程序的很多问题都是源于对计算机工作原理的误解,即使是使用高级语言开发的程序也不外乎如此。这种情况可能导致一个项目需要重新设计和实现,因为项目所使用的工具和算法出现了根本性的错误。

  7 和 8 说的道理差不多,这也是极客时间会连续推出数学、算法、数据结构、网络协议、软件工程等课程的原因,后面还有架构设计、操作系统、编译原理等等。

  查找和解决 bug 经常会占用程序员大量的时间。查找引起 bug 的问题根源,在合理的步骤内修复 bug,以简单的方式编写包含较少 bug 的代码,对于程序员来说,做到这几点就可以显著提升效率。

  我和朋友常常谈起,对于做技术的我们,这是个支离破碎的世界,大到被无形的墙分割的互联网,小到林林总总残缺的工具,他们总是很难以完整的面貌真实的世界。某一天,我们也和其他同样背负着「程序员」之名的人一样,决定以「精卫填海」的精神去「修复」眼中的世界,而这一切,开始于一架优雅和精致的梯子……

  到目前为止,AgentNEO Shadowsocks 节点,包括 VPS 和独立服务器,一共有 30 多个,分布在香港、日本、韩国、美国等地,同时和这些节点所对应的 Docker 容器数量接近 300 个。那么我们是如何做到将不同的服务启动到合适的宿主机上,并且保证通信安全和通信质量的呢?答案是 Rancher!

  Rancher 是一个 Docker 集群管理工具,提供了非常友好的 WebUI 去帮助用户管理容器。它通过虚拟网络加服务编排技术,实现在合适的服务中运行我们想要的容器。

  在 Rancher 中,有一个概念「服务」,它指的是拥有相同参数的一组容器。因此我们的 Shadowsocks 应用就可以抽象成为一个 Rancher 的「服务」。

  上图是我们一组 Shadowsocks 服务的调度规则。它的意思是,在每一台同时拥有 zone=hk-azure 和 role=ss 标签的主机上,都启动一个 Shadowsocks 进程。这样一来,我们将需要运行 Shadowsocks 服务的节点(此处为香港 Azure 数据中心的一台 VPS)打上对应的标签即可,剩下的事情 Rancher 会自动帮我们完成。更棒的是,如果以后我们需要添加一台 Shadowsocks 服务器,只用将对应标签打到新加入的节点里即可自动完成所有部署。

  除此之外,Rancher 还提供了很酷的容器链接图,用户可以很直观的看到目前相关容器的相互依赖。

本网转载作品的目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。如涉及作品内容、版权等问题,请联系我们进行修改或删除!

联系我们 -