我造的这个"轮子"指的是集低代码开发与运维为一体的平台,为什么说它不是"圆"的,因为它有些与众不同,甚至可以说是有些另类。至于为什么造这个"轮子",以及另类在什么地方且听我慢慢道来。

一、痛苦的编码岁月

  我是一个70后码农,开发过不计其数的系统,小到进销存大到电商、物联网甚至是省级平台。每次项目开始都要经历从技术选型、架构设计、开发、测试及最终生产环境部署运维等多个步骤。小项目还好随便一个单体架构就可以搞定,大项目特别是数据量较大的不仔细设计并考虑性能与扩展,随随便便就能把系统玩死。日复一日年复一年的编码,还得时时担心系统crash真是让我身心疲惫。

二、静下心来的思考

  为什么?为什么码农就需要这么累?为什么会没有银弹,哪怕是近似的东东?我又到底需要什么?

天下武功唯快不破

  • 我需要的是能够快速的从无到有的开发出一套系统的工具,并且能够快速部署。

简单的才是最美的

  • 我需要的是适用于中小规模的简单架构,并且依赖的技术越少越好。

唯一不变的是变化

  • 我需要的是能够随时适应需求变化,并且能够按需扩展的分布式架构。

一切尽在掌握

  • 我需要的是能够轻松掌握的系统状态,并且能尽早发现问题及时告警。

三、苦苦的寻找

  经历过痛苦与思考,才知道自己想要的是什么,因而我开始了漫长的寻找与学习过程。先是了解各类开发语言(包括可能您都没有听过的Vala),熟悉其优势、弱势及适用场景。然后学习各种类库及框架,只要觉得能加速开发过程便会研究一番并尝试应用于项目中。最后开始接触各类零代码低代码开发平台,包括国外的OutSystems,国内的起点等。但这些开发平台有些授权费用高,有些有各种各样的限制只能适用于特定场景,且大都是单体架构无法扩展,性能一般般对硬件的要求又高。总之没有我认为完美的技术或组合是我所需要的,难道真的应了“没有银弹”,只能继续疲惫下去。可我偏偏是个比较偏执的人,没有咱就来造一个,哪怕是只提高10%的效率减少10%的成本那就有意义。

四、撸起袖子直接干

  一开始我只是想参照一些快速开发平台实现类似的功能,并且遵循“物得其所”的原则支持不同的存储技术(Sql, NoSql, 对象存储)。在此基础上我实现了一个版本(代号AppBox),但在实现过程中为了适配各类存储技术及相应的api我烦不胜烦,另外这么多技术叠加在一起对整个架构的部署与运维造成了不小的麻烦,总是觉得不完美太Low。

  既然选择了造轮子,何不造个大一点的。所以我又开始动起了存储的念头,在学习了NewSql与NoSql技术后,我决定基于Raft与RocksDB直接实现分布式的存储集成在框架内,这样的话关系型数据、半结构化数据、非结构化数据的存储一并搞定。简单!完美!

五、未来在招手

  “路漫漫其修远兮,吾将上下而求索”,目前原型总算是有点模样了,虽打开代码满屏的TODO,但我抱着愚公移山的态度,相信只要每天码一点,总有一天码出一个近似完美的“巨轮”,也借此寻求志同道合者来共同完成这个“轮子”,共同实现Enjoy coding! Enjoy life!

我造了个好大的"轮子",居然还不是"圆"的!的更多相关文章

  1. 学一手,知乎大V(轮子哥)当年靠它进微软亚洲研究院

    前言 vczh本名陈梓瀚,不过大家更愿意叫他「轮子哥」,毕业于华南理工大学软件学院.vczh大学时代就在微软实习,毕业后即加入微软.开始时是在微软上海,后来进入北京的微软亚洲研究院.现已移居美国西雅图 ...

  2. SQLite is 35% Faster Than The Filesystem

    比方说你要在C++/PHP里实现一个函数Image get_image(string id),不同的图片有1万张(用户头像),你可以把它们存在一个目录/文件夹里,然后fopen()再fread. 你也 ...

  3. NOIP2016滚粗记

    想了好久还是决定要写... Day0 Day-5得感冒一直没好,连磕5天药丸. 早晨得知爸妈都要上班并不能送我到校的消息,于是计划10:30集合,定表8:45准备自己走去学校. 然后平常睡得有点晚,结 ...

  4. 用Go造轮子-管理集群中的配置文件

    写在前面 最近一年来,我都在做公司的RTB广告系统,包括SSP曝光服务,ADX服务和DSP系统.因为是第一次在公司用Go语言实现这么一个大的系统,中间因为各种原因造了很多轮子.现在稍微有点时间,觉着有 ...

  5. 为什么Java大数据是最火爆的编程语言?

    未来10年将是大数据,人工智能爆发的时代,到时将会有大量的企业需要借助大数据,而Java最大的优势就是它在大数据领域的地位,目前很多的大数据架构都是通过Java来完成的. 在这个Android.iOS ...

  6. 大神为你分析 Go、Java、C 等主流编程语言(Go可以替代Java,而且最小化程序员的工作量,学习比较容易)

    本文主要分析 C.C++98.C++11.Java 与 Go,主要论述语言的关键能力.在论述的过程中会结合华为各语言编程专家和华为电信软件内部的骨干开发人员的交流,摒弃语言偏好或者语言教派之争,尽量以 ...

  7. 使用rowid抽取数据方法以及大数据量游标卡住的应对

    平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...

  8. Visual Studio+TFS--强大的项目管理工具

    一.前言 微软的Visual Studio非常强大,可以无缝结合Git或自家的TFS(Team Foundation Server),进行项目管理非常方便,从需求分析.开发.测试.维护,几乎可以贯穿软 ...

  9. NanoProfiler - 适合生产环境的性能监控类库 之 大数据篇

    上期回顾 上一期:NanoProfiler - 适合生产环境的性能监控类库 之 基本功能篇 上次介绍了NanoProfiler的基本功能,提到,NanoProfiler实现了MiniProfiler欠 ...

随机推荐

  1. C# 对字段忽略模型校验

    1.在if (!ModelState.IsValid)之前给字段赋值,然后TryUpdateModel()2.使用如下方法 public ActionResult Create([Bind(Exclu ...

  2. Using VNC on a debian/Ubuntu server with a OS X Mac

    I got a brand new MacBook Pro 13" 2016. I used to work on GNU/Linux for decades. I don't want t ...

  3. BFS提高效率的一点建议

    BFS有两种常见的形式: 形式1: 把初始点加入队列; while (队列非空) { 取出队头; 操作取出的点; 寻找周围符合条件的点加入队列; } 形式2: 操作初始点 把初始点加入队列; whil ...

  4. UbuntuServer添加软件源列表

    要使用Ubuntu前,我们一般都要先做好工具!特别是对于安装这一块~~~~ 1.配置前,先做个配置文件的备份: $sudo cp /etc/apt/sources.list /etc/apt/sour ...

  5. Ionic Framework 4 介绍

    Ionic Framework 4是一个开源UI工具包,用于使用Web技术(HTML,CSS和JavaScript)构建高性能的高质量移动和桌面应用程序.Ionic Framework专注于前端用户体 ...

  6. python实现常用查找算法

    http://www.cnblogs.com/feixuelove1009/p/6148357.html

  7. 解码mmo游戏服务器三:大地图同步(aoi)

    问题引入:aoi(area of interest).在大地图中,玩家只需要关心自己周围的对象变化,而不需要关心距离较远的对象的变化.所以大地图中的数据不需要全部广播,只要同步玩家自己视野范围的消息即 ...

  8. 电商、P2P等大型互联网系统包含哪些业务模块?

    01 前言 在互联网飞速发展的时代,各大互联网公司正在进行激烈的竞争,业务模式也在不断的扩张,这种现状使得目前各大公司的架构系统面临着极大的挑战,而对于我们普通的软件开发者而言,如果你仅仅了解过一些关 ...

  9. 最全java多线程总结3——了解阻塞队列和线程安全集合不

      看了前两篇你肯定已经理解了 java 并发编程的低层构建.然而,在实际编程中,应该经可能的远离低层结构,毕竟太底层的东西用起来是比较容易出错的,特别是并发编程,既难以调试,也难以发现问题,我们还是 ...

  10. ABP开发框架前后端开发系列---(13)高级查询功能及界面的处理

    在一般的检索界面中,基于界面易用和美观方便的考虑,我们往往只提供一些常用的条件查询进行列表数据的查询,但是有时候一些业务表字段很多,一些不常见的条件可能在某些场景下也需要用到.因此我们在通用的查询条件 ...