[译]我们为何基于FreeBSD打造解决方案?
[译注]翻译这篇文章,主要是觉得老外在思考问题时,勇于打破固有的技术栈积累,尝试不同的选择,从而找到最合适自己的技术方案、得到真正的实惠。
Synergy SKY提供多种软件解决方案,本文想讨论的是关于一套用于视频相关的呼叫记录(CDR)分析解决方案。
为客户提供方案时有两种选择,一是让客户避免所有的前置安装、构建一套纯粹的云方案,但这种架构还是有很多术语如数据存储、计算需求和管理;二是直接提供一键式软件预装,这也许是我们要做的。
我们在VMWare类似的虚拟机环境,可以构建全栈测试环境,但首先面临的问题就是操作系统的选择。CentOS当然是我们的首选。
在测试过程中,我们经历的其中一个主要的问题是当应用程序占用太多内存时,Systemd会试图让整个dbus-systemd连接崩溃,导致整个系统处于不稳定的状态,只有重启才能解决问题。
我们还遇到一些其它的问题,可能在最新的CentOS中已经解决了吧。
我们在CentOS系统上已经积累了大量的经验,这在我们做决定时是件好事。
我们在构建平台时所关注的点:
- 容器技术 (docker进行了全方位的测试,LXC进行了一些)
- 软件包与软件仓库管理工具 (yum/dnf)
- 自动化安装
- 服务管理(Systemd)
- 如何处理系统的基础配置(网络、服务启动等)
带着CentOS的经验,对于FreeBSD的体验过程也是从头编译了所有要用到的软件。
然而抱着“行动前先获得点印象”的想法,我们还是决定测试其它的Linux发行版。这正是事情的一个转折点。
FreeBSD 10.3给我们的第一印象就超出了预期。几分钟就可以完成安装,在线手册编写得异常的好。令我惊讶的是有预先编译好的软件包,几乎是开箱即用。几个小时后,我就用FreeBSD搭好了整个技术栈环境。
通过对基于FreeBSD Jail和ZFS的行业案例的了解及自己的体验,我们立马决定不再寻找其它的替代品,专注于测试和学习FreeBSD。
- 容器技术 ⇒ FreeBSD Jails
- 软件包和软件仓库管理工具 (yum/dnf) ⇒ Pkgng / pkg / ports
- 自动化安装 ⇒ bsdinstall (我们甚至构建了PXE安装镜像,让你可以几分钟运行起来一套开发系统)
- 服务管理系统 ⇒FreeBSD rc
- 如何处理系统的基础配置(网络、服务启动等) ⇒ FreeBSD rc 及 rc.conf
我们基于Pkgng作为二进制软件包的发行格式。整个过程中当然也会遇到这样那样的一些挑战,但从来不上稳定性和性能方面的。在OS和用户空间层软件的隔离清晰,这一点完全符合逻辑,也被完美执行了。这也让整个系统自动变得更整洁,很容易知道在哪去找配置文件、在哪存放数据。
FreeBSD 给到我们的是那种“刚好就能用”的体验,而且没有牺牲完整的控制能力。它在实际表现中非常成熟、稳定而又性能强劲!
FreeBSD已经伴随我们走过两年的时间,我们没有再中断过。
有几点要再提一下,也是几个让FreeBSD变得更棒的方面:
- Freebsd-update, 让你的基础操作系统保持更新、与软件包系统相互独立
- Pkg 仓库持续更新,不会像ubuntu/debian/CentOS那样
- 开箱即用
- 通过ports系统,非常容易修改、重新构建和分发定制后的软件包
- 原生集成ZFS,而不仅仅是用户空间层面的驱动
- 商业许可问题更容易处理
- Network 相关的技术栈,FreeBSD中总共有三种不同的防火墙,我们选择了pf
原文:http://blog.synergysky.com/whydidwebuildoursolutionontopof_freebsd
译文有部分删减
最新文章
- 推荐一个iOS关于颜色的库-Wonderful
- asp.net 文件批量移动重命名
- linux正则表达式使用
- ADO.NET笔记——利用Command对象的ExecuteScalar()方法返回一个数据值
- Github博客地址
- php中12个魔术方法
- CSharp Algorithm - Replace multiplication operator with a method
- 一场刺激的游戏——很文艺的山东省第四届ACM赛总结(菜鸟版)
- url中去掉index.php,方便redirect()
- C#自定义事件模拟风吹草摇摆
- DocKer 创建容器 镜像端口映射失败
- python3+正则表达式爬取 猫眼电影
- 009-Python-面向对象
- [视频]K8飞刀 HackerIE自动检测网站注入教程
- 当启动tomcat时出现tomcat setting should be set in tomcat preference page
- lamp配置多个虚拟站点
- JavaScript辅助响应式
- java grpc简单例子
- 20155331 ch02 课下作业
- stream_get_meta_data(打开的文件句柄) 拿到任何网站服务器名字,从封装协议文件指针中取得报头/元数据
热门文章
- 获取AFP共享的文件夹及其权限
- C#中的快捷键,可以更方便的编写代码
- python3基础之文件对象操作
- Java API概述
- Java 数组元素倒序的三种方式
- vs2008快捷键
- boolean和Boolean, char和Character , byte和Byte, short和Short, int和Integer , long和Long , float和Float, double和Double的区别 , String和StringBuffer的区别
- C# ConcurrentStack实现
- JAVA中通过JavaCV实现跨平台视频/图像处理-调用摄像头
- RescuePro Deluxe恢复软件SanDisk