自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

romandion的专栏

创新缔造未来,专注铸就卓越

原创 微服务讲堂--【4】风洞系统

一、系统特性风洞是以人工的方式产生并且控制气流,用来模拟飞行器周围气体的流动情况,并可测量气流对飞行器的作用效果以及观察物理现象的实验设备。这个定义来自百度百科,微服务和飞行器压根就搭不上边,之所以要在微服务架构中借用风洞的概念,用于形象描述一种自动化测试的解决方案,主要在于风洞有这么几点特性和这个解决方案极为相似。以下称飞行器模拟测试环境为【风洞】,称微服务模拟测试系统为【风洞系统】...

2020-04-28 15:29:31 118

原创 如何利用qpid构建分布式总线

和所有基于Broker总线一样,qpid本身架构是联邦制的总线集群,这意味着,一份数据需要在多个broker之间互相备份。这个架构是AMQP定义的,本身并没有什么问题,因为AMQP是为交易而生的,对数据准确可靠的要求远远超过对性能的要求。我们看到在很多公有云中,也经常使用AMQP的另外一个实现RabbitMQ。和qpid一样,这两者之间基本可视为等价,知识每个供应商有所偏好,但各项指标...

2020-03-31 18:55:02 205

原创 微服务讲堂---【3】分布式架构

在写下其他文字之前,必须先声明下,这篇文章不是介绍讨论关于分布式技术的,而是讨论分布式架构在微服务架构中的价值和弊端。分布式技术经过多年的发展,已经相对很成熟,相关文章很多,所以不是本文的重点。在阅读下文之前,我推荐先阅读以下三篇文章,特别是最后一篇,有比较完整的阐述。http://2012.33degree.org/pdf/JamesLewisMicroServices.pdf htt...

2020-03-29 13:34:16 53

原创 落地系统解决方案探讨

落地系统的高收入让很多开发商趋之若鹜,但同样高昂的开发和维护成本,让很多开发商伤不起。扣去功能研发外,如何降低成本,是落地系统的解决方案不得不面对的关键。落地系统的最佳解决方案就是不落地,这话可不是在开玩笑,而是一个朴素的道理,能不落地的,尽量不落地。落地系统之所以有难度,主要在于以下几点痛点:1、落地系统是被部署于一个封闭的环境中,难以及时获取实时信息,运维和监控难度较大。这一点有点类似...

2020-02-16 22:48:24 126

原创 金融信息破局刍议【4】长尾效应

谷歌的搜索引擎改变了广告方式,让门户网站和传统媒体很受伤;亚马逊让实体书店哀鸿遍地。这些企业在细微处改变了生活,让生活更加便利。携巨大的用户量,改变原来行业的游戏规则,让马车消失的是汽车,而不是其他马车。阿里巴巴收购大润发后,黄明端发文表示:他战胜了所有对手,却输给了时代。这个感慨犹如巨钟之音,震耳发聩。任何企业再大,竞争门槛再高,都离不开用户规模。金融信息本身并...

2019-10-26 17:24:09 138

原创 自研还是外购?

一、正反案例在软件公司,特别容易发生自己研发还是采购外部软件的争议,根源在于大家都喜欢表现一下,展示一下水平。这两种选择其实很难有个标准答案,因时因势而异;大到国家之间,小到个人生活,包括社会生活,甚至自然环境,但是原则却是一样的。淘宝初期,马云用信用卡采购现成社区网站,十年之后,发展到能支撑双十一,冠绝全球;京东自建物流仓储,提高用户体验;腾讯自研QQ、微...

2019-10-24 16:44:27 1357

原创 上海滨江健走有感

2019年3月8日一轮明月升云端,两行足印向远方。车马喧嚣夜正酣,漕舫争流为谁忙?几度寒暑离爹娘,谁人锦衣归故乡?岁月更新上海滩,碧水长流黄浦江。...

2019-03-12 14:11:21 143

原创 微服务讲堂---【2】审视RESTful

一、前因后果在写后续文字之前,首先申明两点:1、无意于引起编程语言和架构设计之争;2、对网页开发和使用Java、Python的程序员没有鄙视链。本文仅仅从自身经历过的事情,来讨论RESTful。我在金融软件开发领域工作多年,主要开发交易行情类和资讯类系统。经常遇到互联网领域,特别是做网页的同事,与此讨论关于系统架构的设计,是件令人头疼的事情。以行情发布系统为例,这系统不是像新浪财经,分钟级...

2019-03-06 12:18:04 191

原创 msvcrt-vs2017的编译机制

vs对于C/C++开发者来说,还是比较易用和友好的IDE。虽然我经常开发linux下的服务,也用过vi、kdeveloper、qtcreator等Linux下的IDE环境,但从开发效率而言,最终还是选择在VS下开发调试,再到linux下编译运行。跨平台部分可以简单地采用boost或者自己写一些简单地封装。vs的c++实现还算可以,但在posix c部分,差得很远。导致原生linux下的代码,在...

2019-03-01 12:28:03 605

原创 qpid-lite,一个清晰版的qpid-amqp

        qpid是一个伟大的软件,apache社区的顶级项目绝非徒有虚名。从2012年开始使用至今,在线上从未发生过事故,一直稳定运行。但从一个20年职业老鸟的角度来看源码的话,还是存在不少问题。一个直观的判断,qpid项目组应该是一群写java的程序员转行写c++代码,我在qpid项目源码中,看到太多java的编程技巧,或者他们是c++深度践行者。一、源码结构问题    1、代码...

2019-02-19 20:59:47 193

原创 数据亲和架构--流式计算

       关于计算有很多名词,比如实时计算、分布式计算,以及这里提到流式计算等等。他们是从计算形势的不同维度来描述,不必争议孰优孰劣。流式计算主要从数据的形态来定义的一种计算方式,顾名思义,这种数据如流水一般,没有终点。一个有争议的特征的是,流式数据之间是否具有时序性,我赞同流式数据之间应该假定为具有时序性,并由此引申出,计算是有状态的,具有上下文关系。虽然可以通过各种手段,将状态依赖降到零,...

2018-12-04 11:40:59 417

原创 数据亲和架构--领域语言

       在IT届,一谈起编程语言之间的优劣,可以掀起一场世界大战。即使已经封神的Torvalds也不能免俗,对C++数度开火,更别人说其他语言,压根就不在火力范围内。就我个人而言,启蒙是C语言,用的多是C++,工作范围主要网络、应用系统底层框架、高性能低延迟的应用,所以即使是写C++代码,感觉也类似C语言,很少用高级特性。java、python、lua、php等都用过,因为要做的工作不多,所...

2018-11-16 13:31:10 97

原创 数据亲和架构--事件矩阵

       事件模型对于提高系统性能起到关键的作用,特别是网络IO模型,如EPOLL和IOCP已经深入人心。还有比较少为人知的事件处理引擎,用于高性能的商业逻辑实现。网络IO模型位于系统底层,深入研究的人为数不多,幸好接口很简洁,绑定句柄和事件,当事件触发时,会通知上层应用。在网络IO模型中,可以管理大量的句柄,但事件却只能是有限的几种,一个EPOLL句柄只能算一个观察者。        在...

2018-11-07 11:54:13 133

原创 windows下qpid-cpp 1.38.0编译实录

一、编译环境1、vs2017社区版15.5.3 ,.NET Framework 4.7.030562、从www.boost.org上下载boost 1.68.0源码3、从qpid.apache.org下载qpid proton 0.26.0 ,qpid c++ broker 1.38.04、从www.cmake.org上下载windows版的压缩包,直接解压就可以了。我下载的是3....

2018-10-27 09:17:26 425 3

原创 数据亲和架构--失败恢复

       数据亲和架构在设计上,要确保数据和程序的亲和性,在程序需要的时候,就可以自动得到所需要的数据。基于数据同步技术,会在多个地方保存数据,在程序失效的场景下,并不会引起数据丢失。失败恢复在数据亲和架构下,不会成为一个关键问题。因此,我们这里要讨论的,不是如何正确失败恢复,而是如何在正确失败恢复情况,做到最快恢复。        从数据规模来看,规模越大的,恢复难度越高。就在不久前,一...

2018-10-27 09:14:36 69

原创 油腻中年

       今年40岁了,已经到了古人说的不惑之年,冯唐戏称的油腻中年。油腻中年也确实油腻,特别是码农,经常加班熬夜,最近买了洗面奶每天去油,感觉清爽了很多。        人到中年最大的感受是无力感。身体大不如前,啤酒肚如影随形,计划每天去健身跑步,都要靠毅力支撑,还会三天两头的中断。家有女儿初长成,都市人多,好学校少,竞争压力大。即使心急如焚,也得保持着微笑,讲解自己都被绕晕的奥数。家庭...

2018-09-27 14:46:03 255

原创 马云之退休

       阿里巴巴宣布马云明年的今天退休了,不幸的是,正好赶在这几天刘强东的明州事件,事情就显得有点诡谲。作为中国极少数几个互联网巨头之一,甚至荣登首富宝座的马云,54岁的他正当企业家的壮年,连55周岁的女性退休年龄都未达到,就想着退休,确实令人费解。从常人的理解和我们受到的教育来说,一个有追求的人,都应该倒在自己的工作岗位上,才能够谈得上退休。君不见,李嘉诚90岁了,才在今年宣布退休;任正非...

2018-09-10 17:41:58 244

原创 微服务讲堂--【1】前世今生

       对于微服务,有很多说法,最权威的来自于Martin Fowler  的文章。对于微服务有很多讨论,有很多实践,也遇到很多问题。包装了很多新鲜的名词和概念,让人云里雾里。但我要说的是,太阳底下没有新鲜事,关于微服务的理念,实际上并不是横空出世,而是自然而然发展出的产物,历史上已经有类似的发展脉络。Martin Fowler同样也说,它可以追溯到unix设计原则。一、单进程的发展历史...

2018-09-08 14:55:32 140

原创 数据亲和架构--一致性

        数据亲和架构强调数据和应用的绑定,这意味着,同一份数据是分布在多个服务的内存中,因此系统是分布式架构。关于分布式系统中,如何管理数据一致性的讨论和文章已经够多了,在此没有必要花太多文字复述一遍。这里更多的是从实践的角度来分析数据一致性问题。        在一个进程中,多个线程对同一个数据修改,顺序不同,会导致最终结果的不同。锁的机制实际上就确保线程按照顺序对数据进行修改,使得...

2018-09-04 15:31:03 121

原创 数据亲和架构--子集筛选

        之前谈到数据同步,但我们知道,业务服务使用的数据和存储的数据是不完全一样。服务用到的数据是存储数据集合或者混合衍生集合的子集。因此,进程之间数据的同步更像是物化视图的同步。除了Oracle外,mysql对物化视图并没有很好的支持。而且文件和NoSQL类的数据管理系统,也有类似的子集同步需求。        子集同步本身,我们需要将这个过程分成几个步骤。首先是内存中数据同步,其次...

2018-08-27 14:23:05 129

原创 软件工业

      软件工业和软件产业、软件行业等词的定义不同,而是将软件开发过程等同于和其他制造业一样的性质。这个定义会让很多从业人员感到很不舒服。至少在多数人看来,软件开发人员都是在空调房中,舒舒服服,轻轻松松的敲着键盘,和流水线上,只需初中学历就可以干的活是有本质上的区别。但是让我们把时间拉长一点来看这件事情,会发现这个趋势是不可避免的。        在计算机出现之初,从业人员都是需要专门培训...

2018-08-23 09:18:48 343

原创 金融信息破局刍议【5】平台陷阱

        乐视是不错的例子,贾跃亭以乐视生态的概念,靠着PPT,硬生生的把估值拉到千亿,不可谓不NB。但从另一方面来,一个生态链就是一个帝国,掌握生态链就帝王无异,躺着赚钱的节奏。这个想象空间,绝对能令很多人的荷尔蒙过量分泌。苹果的app store,马云的宝宝军团,马化腾的QQ微信帝国,以及诸多大型公司都是生态链模式下的顶级掠食者,都是满满的正能量。于是作为生态链的承载,平台就是必然的选项...

2018-08-20 17:22:42 106

原创 数据亲和架构--数据同步

      数据亲和架构核心要解决数据和程序的绑定问题,那么数据在进程间同步就尤为重要。因为性能的关系,增量同步是首选,全量同步只有在初始化或者出现异常的情况下,才会考虑。在流数据中,因为有时序,比较容易实现,而在静态数据中,比如文件或者数据库中,通常没有严格的时序,只有快照,要做增量比较困难。        以物理时间流动为参照系,任何一个数据集都可以分为某个时间点的快照,以及后续的变更。而...

2018-08-20 08:55:16 341

原创 数据亲和架构--核心目标

      数据亲和架构的核心目标,是为了解决微服务中的业务逻辑和数据绑定问题。使得业务逻辑在使用数据时,无需更多关注数据的传输和管理细节,确保数据在需要的时候,就能够使用。即使在微服务在异地重启或者多实例重启,数据也能够自动迁移和同步,无需被业务逻辑感知。如此一来,对于微服务来说,实现上与单实例没有太大差别。        在很多场合中,讲解微服务的优势,都要和单体架构比较。在实现业务单元时...

2018-07-23 16:42:38 157

原创 数据亲和架构--缘起

         数据亲和架构并没有否定其他架构,尤其是微服务架构的合理性,而是从另外一个视角来重新审视整个架构,做出补充。让数据和业务逻辑具备更强的亲和性,故命名为数据亲和。        微服务架构提出了一个理念,每个服务划分成更细粒度的服务单元。每个单元的职能更加单一,降低了服务单元的复杂度和耦合性,但它同时增加系统整体复杂度,对运维体系提出更高的要求。        K8S和Docker解...

2018-07-13 10:42:59 158

原创 金融信息破局刍议【3】寻找切入点

当一个行业已经形成垄断,并构筑足够深的护城河,要打破这个局面,难度不小,不是靠一腔热情就能成事。纵观中国历史,在中原地域已经建立起一个强大的王朝,在之后的历史中,只有三种情况才能实现王朝更迭。第一种情况,王朝腐败,人民起义,建立一个新的王朝;如中国几千年的封建王朝更迭。第二种情况,在中原之外,建立一个新的王朝,如北方的游牧民族,等中原王朝国力衰败,入侵中原;如元朝和清朝,如罗马时期的野蛮人入侵。这...

2018-06-29 09:35:52 125

原创 qkc开发总结

qkc库是windows下的libc库,兼容posix标准,并实现linux下特有的API接口。它可以被visual studio直接使用,用来编译linux下的c源码。经过半年的开发,基本完成代码总体框架,还没有经过调试验证,也算告一段落。qkc的实现参考了glibc/linux/cygwin以及网络上的许多博客,感谢这些源码的作者。    ​    ​在windows和linux的底层API中...

2018-05-30 12:07:20 181

原创 金融信息破局刍议【2】同质化战争

一、脆皮垄断上篇讲到过,金融信息市场是同质化市场,基于市场效率问题,必然走向垄断形成规模化,胜者通吃。与此相似的有富士康全球代工,有共享单车,有打车平台。以垄断攫取超额利润,是资本惯用的手段,但在允许充分竞争市场,这种垄断的基础却是极为薄弱,所以称之为脆皮垄断。以滴滴为例,挤走UBER之后,去补贴涨提成,弄得司机怨声载道,直到美团强势介入,打得滴滴痛苦不堪,不复有之前一家独大的豪气。ofo质押小黄...

2018-05-18 13:28:00 145

原创 jemalloc原理概览

jemalloc在linux的世界里声名鹊起,并被移植到多个平台。后起之秀的tcmalloc性能与之相近,虽有谷歌这个牛爹,但因jemalloc专美在前,tcmalloc的使用范围还是略逊一筹。网络上关于jemalloc的各种解读很多,不再一一赘述,这里 挑一些关键点来分析。一、地址访问malloc和free的第一个参数都是内存地址,如何快速定位到该地址所属的内存块基址呢,在高频内存分配中,这是第...

2018-05-10 10:32:48 1745

原创 管理之殇

一、管理的表象官本位已经深入国人骨髓,即使在IT领域也没有净土,最近发生的鸿浩志事件更是一个典型。在大多软件公司,程序员都会走上管理岗位,只有少数大公司才有技术专家的岗位,否则在35岁之后,只能考虑转行。管理的作用,在公司运营过程中,不断被放大,甚至被推崇到至高地位。窃以为并非如此,管理的范围包括制度、资源、人等内部因素,以及市场、用户等外部因素。其中制度和资源容易定性定量,人的变化因素较多,市场...

2018-05-07 14:48:10 198

原创 架构哲学

架构设计,是在技术基础上,综合权衡约束条件后,进行选型的一门艺术。他是为解决现实问题,提出的指导性方案,并且是可落地的。架构哲学是探讨成功架构设计应该关注的问题,以及原则和方法论。一、知识储备每一种架构都有其系统边界,能解决什么问题,不能解决什么问题,这是架构的先天属性。试图用一种架构解决所有问题,不是吹牛皮,就是耍流氓。作为设计者,首先要有知识广度,知道的越多,可供选择的范围越大,就越容易做出合...

2018-05-03 11:33:53 381

原创 C和C++生存法则

4月份发布的全球编程语言排行榜,Java高居榜首,C屈居第二,C++紧随其后,C和C++的比例之和,超过Java5%,python借人工智能和DevOps的东风,扶摇直上。新秀GO语言,投胎技术好,有个好爹,依托容器技术和K8S,迅速走红。本文不是为C/C++站台,宣传其为全宇宙最好的语言,而以近二十年的从业经验来分析C/C++的优劣势,提出指导性建议。C语言以过程式编程,比汇编更贴近人类思考方式...

2018-05-02 09:06:34 180

转载 TiDB 架构的演进和开发哲学

本文来自 CSDN 《程序员》 2017 年 2 月的封面报道。 对于一个从零开始的数据库来说:选择什么语言,整体架构怎么做,要不要开源,如何去测试…太多的问题需要去考量。 在本篇文章中, PingCAP 联合创始人兼 CTO 黄东旭对 TiDB 的开发历程进行了详细简介,为大家还原 TiDB 的架构演进全过程。在大约两年前,我有一次做 MySQL 分库分表和中间件的经历,那时在中间件里做 sha...

2018-04-26 18:29:46 134

原创 posix for windows

代码开发速度快,程序运行性能高,是所有码农的残念。而posix for windows是这个残念的理想解决方案。在服务器操作系统的选型中,Linux已经成为主流,包括交易所等金融机构。而在终端操作系统,windows以其简单易用成为主流。使用visual studio开发C/C++程序,开发效率要高于其他工具。一种流行的做法,是在visual studio编写跨平台的代码,测试通过之后,再在Lin...

2018-04-26 10:31:34 2123 2

原创 金融信息破局刍议【1】局面概览

天下英雄苦万得久矣。万得在金融信息服务行业毫无疑义地处于优势垄断地位,行业研究员和基金经理基本人手一个终端。其他金融从业者也多引用万得数据作为论据。万得虽有诸多竞争者均未能在这个细分市场和万得一较高下。万得能雄踞行业龙头多年,历经无数挑战,必有其独到之处。但我们知道,无不朽之王朝,历史必然是向前发展。不是万得太强,也不是挑战者太弱,而是没有找到关键点。本文不以击败万得为目的,而且希望通过更高层面地...

2018-04-26 08:38:04 190

原创 重建之初,衰败之始

系统重建,就是将系统推倒重写,对于很多人来说,是难以抵挡的诱惑,包括技术,产品、市场以及公司管理层。每次听到这样的计划,不论描绘的未来多么美好,我,还是一声叹息,一场悲剧就要上演了。一、重建之原罪系统重建,是有着深刻的心理催化要素,逻辑上也能自圆其说,因而容易被广泛接受。旧系统在创建之初,因为市场、时间、资源等因素,在实现时必然留下诸多缺陷。在初期大家都盯着主要功能,不会在意这些隐患,但随着持续发...

2018-04-25 13:45:54 101

原创 epoll移植到windows的可行性研究

1、各有千秋linux作为高效稳定的操作系统,部署在大量的服务器上。epoll在linux下,一个高性能的网络IO模型,在服务端领域发挥着重要的作用。但在开发效率上,windows以及visual studio系列因其良好的用户体验而更受用户青睐。如果能够将linux的运行期优势和windows开发期的优势,有机地结合在一起,是一个不错的主义。2、模型差异和epoll相对应的是网络IO模型是win...

2018-04-23 11:08:47 2128 1

转载 Windows10+Ubuntu双系统安装[多图]

原文地址: http://www.jianshu.com/p/2eebd6ad284d最近因为毕设重新回归Ubuntu,手头有一台装了Win10的ThinkPad X240s,最终成功完成了Windows 10 教育版和Ubuntu Kylin 15.10 的双系统配置,下文(多图慎入)是我完成整个过程的手记。安装方式Ubuntu是很多Linux初学者最理想的选择,如果你恰

2018-01-11 10:58:01 8667 2

转载 UEFI模式安装Win10和Linux双系统

最近心血来潮,想装一个Linux、Windows双系统,吸取上次安装的经验,这次一定都要使用UEFI模式启动,需要注意的是必须是支持此种启动模式的系统(一般解压之后都有efi文件夹不需要刻录),这次遇到的问题主要如何分区,失败几次后找到一篇写的十分详细的博客,自己搬过来,以备以后使用。原文链接:亲测UEFI启动模式的电脑安装Win10和Ubuntu双系统------------以下是原文-

2018-01-11 10:47:40 3439 3

原创 浦东风云录【3】角色差异

企业启动之始,由创业者开辟道路,犹如生身父母。当企业模型验证可行之后,就会有投资者进入,是因为看到盈利机会。当企业进入发展通道,需要引进职业经理人,制定规章制度,从草莽英雄成为正规军。从各个角色在企业发展各个阶段进入的时机,我们可以从本质上定位他们的思考方式。虽然不能一概而论,而且角色随时可能发生变化,但可以说大抵如是。一个企业本质上是以利为先,任何不以盈利为目标的企业都是在耍流氓。当然,我们不排...

2017-10-09 11:47:19 337

提示
确定要删除当前文章?
取消 删除