目前架构有几个热点方向:微服务, dubbo, Faas,还有 TiDB

现在开发模式是前后端分离基本成为行规。

应该说以大部分企业业务量级、人员规模来说,要去和淘宝等大厂去对标是非常傻的。对大部分企业来说 LAMP 就够了,要是聪明点把 M 换成 P,那 ElasticSearch 什么的就都省了。

那么这些企业为何要跟风呢? 原因很简单,确实他们有爆发的可能,而一旦爆发后IT建设扛不住压力,就会导致流失的客户再也不回来。人人网曾经有过这样的故事,最近也见过几个这样的案例。可伸缩架构对他们来说的确非常重要。

微服务

微服务架构的优势在哪儿?

我曾经接触过一个死活要搞微服务的公司。他的看法是,项目大了每次部署都要花很久打包,要升级就得重启服务器,所有服务都要停,所以微服务是必须的。

当然,他肯定不知道 d2js 这种扔上去就能完成部署的技术,相似的 php 等等应该也不太了解。

其实微服务这种技术充满了缺点,它把一个产品变成了一堆产品,把内部问题变成了外部问题。上微服务更多的是一个管理需要而不是技术需要。

微服务解决了哪些问题呢?

首先,微服务拆分简单粗暴,在实践中所谓架构师只要若有所思的把传统意义上的功能模块切成微服务就行,一个项目就这样变成了好几个。

这样新招来的十几个人分两个三个组,各自领一个微服务去开发。库也不共用,也不需要共享业务级别的类库。前期成本为零,开发完了靠沟通磨合完成服务对接。

各个项目互为黑匣子,这样每个组想用什么技术用什么技术,各有各的 POM,包冲突什么也不存在了。既然模块功能单一,包名是叫 com.nb.service.payment 好还是叫 com.nb.payment.service 好也不用思考了,毕竟你手里只有 payment。

这个角度微服务的擦屁股版就是所谓中台。

微服务上线后出什么问题也很好查,先找到问题在哪个微服务,揪出相关责任人就行,这样一来其他人就不会被午夜骚扰。

由此可见,微服务其实主要解决的是管理问题,或者说开发模式问题。

微服务的问题有哪些呢?

  1. 一旦采用微服务,许多调用就变成远程调用,成本很高,协调成本也很高。
  2. 微服务对数据库的治理采用一个服务一个库的模式,也导致更高的数据库维护成本,只能便宜云厂商。
  3. 采用微服务后, 程序员越来越沦为 coder, 对产品全局的把握越来越低下
  4. 协调成本很高, 从以往靠代码变为靠文档. 收到接口首先要验收一遍.
  5. 必须上笨重复杂的分布式架构,系统复杂性度大幅上升

dubbo、SpringCloud 等

由于微服务拆分把任何小系统都变成了若干个分布式系统的邦联, 导致以往只有跨系统边界才有的分布式事务等等成为必需品, 分布式架构, TCC, Raft 等等成为显学.

为此就需要引入一些能实现 TCC 的模块, 这就是 dubbo, SpringCloud 等。

这些技术给我带来的感觉特别重,我的预感是会像 EJB 一样过时,让人很难深入进去。

FaaS Servless

函数即服务,和 d2js 的理念很相似。FaaS 彻底把作为业务的主体(业务函数)和作为容器的主体(单节点或分布式系统)彻底切割了。

平台归平台,业务归业务。这是 d2js 设计一个主要初衷。

FaaS 的事件/函数模式和 d2js 也很像,可以说 d2js 往前走一步就是 FaaS。在实践中我也用 crontab 调 URL 的方式实现定时触发 d2js 任务函数,也用 activiti 调用 URL 来触发 d2js 流程处理函数。

相信未来应该属于 FaaS。d2js 应当迅速演进到 FaaS。

FaaS 能不能覆盖所有业务场景呢?无部署的模式不适合一些重量级的算法复杂演算繁多的应用。

Q. 能不能把这种应用的接口视为 F,程序主体视为依赖包呢?
A. 这么理解是不合适的,这些所谓的依赖包需要追随 F 部署,不具备稳定性,不能视为一种东西。并且这些包对环境依赖较高,有的需要 GPU,有的需要自己的 db, 有的需要文件存储,不像 F 可以轻易的迁移。所以像这些服务还是用微服务来实现会比较好。当然,一旦它们能中立的定型下来,转为`F + 依赖包`也未尝不可。

目前的 FaaS 主要问题有:

  1. 函数粒度太小,一个函数即使加上一些 annotation,能表达的东西也是很少的。由于部署不在一处,这种函数和其它函数之间不能简单的互相引用。这和 C# 只有闭包而缺乏匿名内部类的问题相似,单个函数无法形成 bundle,无法形成一组接口这样的概念,组之间需要共享一部分组内数据。
  2. 分布式事务缺失。我看不到容器对分布式事务有任何支持, 因为编写 F 都不需要给相应实现.

TiDB

TiDB 是我通过 LSTM Tree + RDBMS 找到的。PG 也有一个实现,叫 VidarDB. TiDB的应用在国内已经非常广泛了, VidarDB有待检验。

可以说,TiDB 彻底解决了分布式数据库的问题。分布式架构最终形成分布式平台,而不是人人都研究分布式,这才是正道。

如将 LAMP 模型里的 M 换成 TiDB,是不是可以解决今天的问题呢?

A 现在是 NGINX

M 现在是 TiDB

P 现在是 d2js

LNTD 这样的组合,要应付大并发,还需要做这样的改进:

  1. d 所依赖的容器应更换成 vertx 或其它高性能框架,这样 RPS 可以做到极高
  2. 其次,这种容器最好是分布式的容器,这样 d 就不用担心伸缩性
  3. 同样需要 cache 降低数据库压力,需要 MQ 用于削峰。

当然,配合分布式容器,d2js 也应改进 TCC 特性,以及更加专门 FaaS 事件驱动绑定。

有了这些改进,d2js 会是一个非常好用的 FaaS 实现方案。

架构发展趋势以及 d2js 的未来的更多相关文章

  1. WOT干货大放送:大数据架构发展趋势及探索实践分享

      WOT大数据处理技术分会场,PingCAP CTO黄东旭.易观智库CTO郭炜.Mob开发者服务平台技术副总监林荣波.宜信技术研发中心高级架构师王东及商助科技(99Click)顾问总监郑泉五位讲师, ...

  2. 大数据时代的新BI系统架构发展趋势

    商业智能(BI,Business Intelligence).它是一套完整的解决方式,用来将企业中现有的数据进行有效的整合,高速准确的提供报表并提出决策根据.帮助企业做出明智的业务经营决策.     ...

  3. InfoQ一波文章:菜鸟核心技术/Intel发布CPU新架构3D堆栈法/BDL/PaddlePaddle/百度第三代Spider/Tera

    菜鸟智慧新物流核心技术全解析   孟靖 阅读数:63192018 年 12 月 14 日 16:00   2018 年天猫双 11 全球狂欢节已正式落下帷幕,最终成交额定格在 2135 亿元,物流订单 ...

  4. .net 大型分布式电子商务架构说明

    .net大型分布式电子商务架构说明 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便 ...

  5. Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!)

    Web信息架构——设计大型网站(第3版)(久负盛名经典再现,信息架构设计领域基石之作!) [美]]Peter Morville(彼得·莫维尔)  Louis Rosenfeld(路易斯·罗森菲尔德) ...

  6. E8.Net 工作流二次开发架构平台

    一.          产品简介 E8.Net工作流开发架构是基于微软.Net技术架构的工作流中间件产品,是国内商业流程管理(BPM)领域在.Net平台上的领先产品,是快速搭建流程管理解决方案的二次开 ...

  7. NoSQL架构实践

    经常有朋友遇到困惑,看到NoSQL的介绍,觉得很好,但是却不知道如何正式用到自己的项目中.很大的原因就是思维固定在MySQL中了,他们问得最多的问题就是用了NoSQL,我如何做关系查询.那么接下来,我 ...

  8. net大型分布式电子商务架构

    net大型分布式电子商务架构 背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维 ...

  9. .net大型分布式电子商务架构说明(转载来自<头条>)

    背景 构建具备高可用,高扩展性,高性能,能承载高并发,大流量的分布式电子商务平台,支持用户,订单,采购,物流,配送,财务等多个项目的协作,便于后续运营报表,分析,便于运维及监控. 架构演变 基础框架剥 ...

  10. 云存储的未来:Scale Up还是Scale Out?

      云存储的几十年发展历程,其计算架构模型,也从Scale Up走向Scale Out.但是展望未来数字世界的海量需求,目前流行的模型还能够持续满足吗?本文通过对云存储历史的回顾,及对Scale Up ...

随机推荐

  1. 墨天轮PostgreSQL精品学习资源合集(含基础手册、实操技巧&案例、书籍推荐)

    近日,PostgreSQL 15 的第一个 beta 版本发布,这一最新版本在开发者体验.性能表现等方面都有提升.从最新的DB-Engines排名可以发现,PostgreSQL近十年来得分一路高涨,目 ...

  2. windows下安装部署 hadoop

    一.安装下载 1.首先在hadoop官网下载一个稳定版本,选择binary包 官网地址:https://hadoop.apache.org/releases.html 下载下来是tar.gz文件,用w ...

  3. AvaloniaTCP-v1.0.0:学习使用Avalonia/C#进行TCP通讯的一个简单Demo

    TCP通讯简介 TCP(传输控制协议,Transmission Control Protocol)是一种面向连接的.可靠的.基于字节流的传输层通信协议.它确保数据包按顺序传输,并在必要时进行重传,以保 ...

  4. Oracle新增日志组成员

    Oracle新增日志组成员 查询当前的日志组信息: sql SELECT * FROM v$log; 查询日志组对应的日志文件: sql SELECT * FROM v$logfile; 查询日志组的 ...

  5. KubeSphere 社区双周报|2024.09.27-10.10

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  6. 基于 JuiceFS 的 KubeSphere DevOps 项目数据迁移方案

    方案背景和目的 KubeSphere 自发布以来已有 2 年之久,从 2.1.0 版本至目前最新版本 3.3.开发人员的编译构建都基于环境平台的 DevOps 功能(底层是 jenkins)实现,如果 ...

  7. MVC PHP架构 博客论坛实现全过程

    目录 1. MVC的历史 1.1 优点与缺点 1.1.1 优点 1.1.2 缺点 2. 个人博客论坛的MVC实现 2.1 前言 2.2 web代码结构 框架 2.2.1 web应用发展 2.2.2 C ...

  8. Cartographer的扫描匹配

    cartographer 代码思想解读(1)- 相关匹配 cartographer在2016年开源后一直在使用,但是一直未仔细阅读并分析其核心代码结构.目前网上可以找到许多博主对其分析和理解.其car ...

  9. Edge缓存清理操作说明

    1. 打开Edge浏览器 2. 点击屏幕右上角三个点的按钮 3. 在出现的菜单里面选择"设置" 4. 在出现页面里面左侧选择"隐私.搜索和服务",然后右侧点击& ...

  10. DataGrip 2024.2.2 最新安装教程(附激活-2099年~)

    下载 DataGrip 2024.2.2 版本的安装包. 下载补丁https://pan.quark.cn/s/fcc23ab8cadf 检查 免责声明:本文中的资源均来自互联网,仅供个人学习和交流使 ...