琅琊风云榜:对话Tiny框架创始人罗果

简介:

以下是访谈实录:

王友强: 罗总您好,请您介绍下您的从业经历吧?

罗果:从业经历么?这个不太好回答,网友们问到这个问题的话,我一般都回答有3年工作经验,本来我也觉得好像哪里不对,不过想想右军也就十八岁,我这个也偏差不大。

工作先是在东软,东软非常不错,就是东北比较冷,于是来到杭州。

现在在恒生,恒生也是家好公司,这不一呆就这么多年过去了。

2013年开始试水开源,一路走来感觉非常充实,也非常感谢恒生在这方面的开放与支持。


王友强: 了解到罗总写了一本《企业级Java EE架构设计精深实践》

能介绍下写这本书的背景么?

罗果:其实,做企业级架构这么多年了,也有一些自己的心得,不一定都是最好的,但都是我们尽可能往好了做的,都是扎扎实实的实践,许多实践也是经受住了应用过程的种种考验。

当然,有可能有许多同学也有类似的问题,也就需要在这些领域踩坑,那么如果把我们在实践过程中怎么踩的坑、怎么解决的问题与大家分享,如果能帮到一部分的人,那也是我的荣幸。

于是就把我们在tiny开源框架中的一些实践拿了出来,并成书分享。


王友强:对于软件设计,有一些什么样的看法?

罗果:软件设计和我们的现实设计其实也是有非常多的相似性的。我们的宇宙运行着这么多的天体,开普勒只用了3个定律就概括了。

所以,我的口头禅就是好的架构设计一定是简单的,好的架构是品出来的。

cab92139aaeb3f96639d6d0f47310715535fada8

我一直有一个观点,软件架构做的不够好,是因为还分的不够细(清楚),只要分析清楚了,其实后面的工作就只是工作量的问题了。


9fc6009bf4a136149e02632ab4ea3ad683115112


王友强:你从程序员到架构师,都有哪些成长心得?

罗果:如果说有些心得的话,那就是思考、实践然后循环这一过程。

以前我写过一篇博客,就是说如何编写螺旋矩阵和蛇形矩阵的问题。

其实许多同学在学生期间都写过这个程序,那么我就不停的思考是不是可以写的更简单?是不是可以写的更简洁?

直到最后,我在思考是不是可以只用一个循环就写出来?结论居然是可以。

86c569c4a2185366ea302d890ab0714ca0f3b624

所以,从一开始做程序员,只是考虑怎么完成任务,慢慢要分析背后的机理,再后来要寻找背后的逻辑给出最好的解决方案。当然,有可能我们永远找不到最好的解决方案,但是我们可以逐渐接近它。

当然,也是要有挑战权威的勇气。

我们用了Apache VFS,结果使用过程有内存泄漏,于是就有了TinyVFS。

我们用了Velocity,结果使用过程有诸多不方便的地方,于是就有了TinyTemplate;

我们研究了大量的分库分表方案,但是总有这样那样的我们无法忍受的点,于是就有了TinyDBCluster,还有许多Tiny的组件就是这么出现的。

作为一个程序员,如果你有追求,有追求完美的意愿,你的技术之路一定可以打开。

08d25099e9b564f949239730e18aab0a6a5968c4


王友强:企业架构和互联网架构在风格上有哪些差异点?

罗果:这个命题不太好回答呢,其实早些年企业架构和互联网架构还是有非常大的分别的,随着互联网公司的蓬勃发展,许多原来企业架构不愿意采用的技术,也都开始从互联网架构中想企业架构延伸。

我们所在的公司是金融领域,而金融互联网和互联网金融吵吵了半天,结果就是反正大家也同化了,叫什么其实已经不重要了。

所以现在的企业架构和互联网架构也正在同化的过程之中,总有一天他们之间不会再有分水岭。


王友强:您是开源框架Tiny的创始人,主要是一些什么样的应用场景?

罗果:我在恒生也是负责了恒生J2EE技术平台的设计和开发工作的,限于公司所在的行业特征,实际上做出来的技术平台并不是非常满意,有点重。

因此就想探索是不是可以有更轻量的做法?

于是我就连续写了近30篇博客,对于架构中的每一个专项领域理想化的实现方式是怎么用的做了深入的分析和研讨,甚至编写了原型。

许多以前没有想通透的地方也有了进展,于是就诞生了坐个开源框架的想法。

由于期望做的比较轻量,于是就起了个名字叫Tiny,也是期望它的每一块内容都非常Tiny。

时至今日,Tiny框架已经变成了一个“重”量级框架,这里的重是因为它包含的内容太多太多,几乎软件开发过程中需要的内容都可以在Tiny框架中找到,或者已经集成好。

作为开源中国的GVP项目(全国只有不到80个),不论是个人项目、小型项目、中型项目还是大型项目使用Tiny框架来开发都可以非常好的得以支持,通过服务中心,可以非常方便的进行服务集群水平扩展,通过分库分表可以做到数据库的水平扩展。

而这个扩展过程,对于业务代码是全透明的,所以如果您缺少一个技术平台或者一些通用组件,可以到Tiny官网找一找,说不定有惊喜哦。


 王友强:Tiny现在的发展情况如何?Tiny的设计原则是什么?

ee987c0082aaa34ca9a0ed29eb1ab87e432d4b3e

罗果:

Tiny框架开源至今,单单主项目就有4620次提交,总共有1060个左右个issues,现在还有28个issues没有关闭。

虽然没有准确的数据知道有多少用户,但是从上面的数据可以看到:我们是扎扎实实在做的,有许多同学是在使用或者关注它的。

设计原则用于在设计目标冲突时的解决策略,Tiny框架的设计原则有:

  • 约定优于配置原则-COC
  • 不要重复你自己原则-DRY
  • 减法原则:减法原则是我们自己提出的,意思就是给程序员做减法。
  • 模块化原则:模块化对于软件开发过程中开发、高度、集成、发布、维护过程中所起的作用及节省或花费的巨大成本。因此提出了Business Unit的概念,使得与模块相关的所有内容都可以放在一起。
  • 自动组装原则:在整个Tiny框架的构建过程中,都非常注重集成过程的自动组装,要求做到扔进去不用管,由框架自动集成。
  • 下级服从上级原则:Tiny框架则从框架层级做了限制,使得下级必须服务上级。
  • 单一原则:通过单一原则进行强制性的约束,使得一个模块只解决单一模块应该解决的问题,从而避免不同的问题放在一起解决所导致的胡子眉毛缕不清的问题,同时也避免了不恰当的依赖及模板引用。
  • 集中配置原则:在Tiny框架我们对配置做了大量的工作,一个是COC方式,如果不配,则采用系统默认的值;一个是集中原则:把需要人工需要配置的内容都集中起来统一配置;一个是对于不需要人工干预的配置,那就集成在Jar包中,作为发布者发布项的一部分。

561d18383c036c66be5bef467590eeeee9e7385a

应该说这些原则在我们设计过程中起了非常大的作用,尤其是几个设计目标冲突的时候。


王友强:相比较于现有的框架,Tiny有哪些优缺点?

罗果:其实,各个框架都是有自己的风格和着重点的,也是各有优缺点的。

这里我说说Tiny的特点吧:

  • 相对于其他框架来说,Tiny的原创性占了非常大的比重,也有许多世界级的子项目,比如:模板语言、分库分表、数据权限、脚本语言等等
  • Tiny框架的粒度分的非常细,这样使用的时候就可以有比较大的选择余地
  • 非常完善的文档,Tiny框架文档有近1500页,虽然我们的文档也有这样那样的问题,但是我们已经尽可能的为使用者提供详尽的文档了
  • 通过《企业级Java EE架构设计精深实践》一书和本人的博客(超过36万字),可以深入理解Tiny框架的设计思路和实现方式

05dc433c671b4698c3fd5b741290099f036e7d0e


王友强:平时除了软件外,还有哪些业余爱好?

罗果:我业余爱好还是比较多的,现在主要下下围棋、象棋、军棋,打打台球等,水平在饭后玩玩的里面还可以,野狐围棋最多上过6d但是待不住,也就野狐5d水平;中国象棋从小学到大学鲜有对手,不过现在退化了;军棋在QQ军棋里面,大概60%胜率。


王友强:1月27日成都ArchData的分享的主题主要是关于哪方面?罗总能提前剧透下么?

罗果:由于大会的主题主要限定在数据方面,因此这次我准备的内容也必须切题,全部都是和数据有关的,就我们在关系数据库的水平扩展、数据权限,数据融合和数据展现方面的实践给朋友们做个汇报,必须都是干货

由于时间关系可能讲解深度有限,到时会在会场公布我的微信号,感兴趣的同学可以线上继续交流。


原文发布时间为:2018-01-22

本文作者:王友强

本文来自云栖社区合作伙伴“中生代技术”,了解相关信息可以关注“中生代技术”微信公众号

相关文章
|
6月前
|
人工智能 缓存 关系型数据库
Mistral AI vs. Meta:顶级开源LLM比较
为了提高性能,大型语言模型(llm)通常会通过增加模型大小的方法来实现这个目标,但是模型大小的增加也增加了计算成本和推理延迟,增加了在实际场景中部署和使用llm的障碍。
179 2
|
6月前
【RAPHAEL】商汤发力prompt,免费开源的图文模型!我写下了湖心亭看雪与桃花源记
【RAPHAEL】商汤发力prompt,免费开源的图文模型!我写下了湖心亭看雪与桃花源记
47 0
|
4月前
|
人工智能 JSON 自然语言处理
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
【7月更文挑战第7天】国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
221 10
国内大模型LLM选择以及主流大模型快速使用教程[GLM4/Qwen/Baichuan/Coze/Kimi]
|
4月前
|
人工智能 计算机视觉
首个多模态视频竞技场Video-MME来了!Gemini全面超越GPT-4o,Jeff Dean连转三次
【7月更文挑战第7天】Video-MME,首个多模态视频基准,由中国多所大学的研究团队推出,挑战了AI模型在视频理解上的能力。Gemini 1.5 Pro在评估中超越GPT-4o,平均准确率75.7%。此基准强调视频多样性、时间持续性、多模态输入和高质量标注,揭示了模型在动态场景中的潜力和局限性。**
93 1
|
5月前
|
人工智能 自然语言处理 测试技术
社区供稿 | OpenVINO™ 助力 Qwen 2 —— 开启大语言模型新时代
就在刚刚,阿里魔搭社区发布了全新的 Qwen 2 系列模型 ,作为 Qwen 及魔搭社区的重要合作伙伴,OpenVINO™ 一直致力于赋能开发者高效搭建人工智能解决方案,助力大规模语言模型的性能提升和应用扩展。
|
6月前
|
人工智能 自然语言处理 搜索推荐
Mistral推出聊天机器人 Le Chat 挑战 ChatGPT
【2月更文挑战第8天】Mistral推出聊天机器人 Le Chat 挑战 ChatGPT
93 6
Mistral推出聊天机器人 Le Chat 挑战 ChatGPT
|
11月前
|
数据采集 人工智能 自然语言处理
社区供稿 | 猎户星空发布Yi系列微调34B-Chat模型,开源免费,中英兼备全面领先!
OrionStar-Yi-34B-Chat中英文大模型集高性能、完全开源、免费可商用等诸多优势于一身
|
人工智能 PyTorch API
【奶奶看了都会】Meta开源大模型LLama2部署使用教程,附模型对话效果
就在7月19日,MetaAI开源了LLama2大模型,Meta 首席科学家、图灵奖获得者 Yann LeCun在推特上表示Meta 此举可能将改变大模型行业的竞争格局。一夜之间,大模型格局再次发生巨变。
1697 3
【奶奶看了都会】Meta开源大模型LLama2部署使用教程,附模型对话效果
|
机器学习/深度学习 人工智能 搜索推荐
对标Llama 2,OpenAI开源模型G3PO已在路上
对标Llama 2,OpenAI开源模型G3PO已在路上
|
机器学习/深度学习 人工智能 自然语言处理
剑桥、腾讯AI Lab等提出大语言模型PandaGPT:一个模型统一六种模态
剑桥、腾讯AI Lab等提出大语言模型PandaGPT:一个模型统一六种模态
157 0