我的物联网项目(十二) 单体应用架构不行?

单体应用架构在创业型项目里面是非常合适的,毕竟它主要的担当还是在验证创业模式以及迅速功能实现,所以它从开发到部署,在少量开发人员的基础上能非常减少成本,主要是门槛低,开发效率也非常高。到目前为此,这个物联网项目从开发开始到现在线上运行大概经历了5个月左右的时间,订单数据从日订单几百到现在的七八万,在应用层本身来说并没什么压力瓶颈,中间主要升级了数据库RDS的配置,由原来的4核8G升级到了8核16G,对数据库稍微做了些优化,依然跑到很稳定。公司从实施想法开始,到目前半年的时间里面,不断的总结创业思路和改变策略,所以开发的业务变化由不断的“试误型”开始趋向于明确“清晰型”,而且业务垂直方向也越来越深,由自己做投放商急迫需要转型做招商平台城市合伙人,而且广告内容,和线下门店信息推广也在融合,其实和我之前的电商O2O很类似,一开始自己做个简单交易网站卖东西,做着做着就做B2C,B2B平台,其它的商家也进入这个平台开网店,将线下的信息广告推广也融合进来,大概套路都一样,无非是前期自己先验证模式,觉得可行就做平台告诉别人应该怎么怎么做。公司在半年的时间里面也各种融资好几轮,达到了好几千万级别的融资,接着而来的对软件平台的需求和要求也越来越高。想法谁都有,关键是要去实施,互联网游戏的规则就是这样,技术实施永远跟着产品想法的屁股在后面追。

单体应用架构在项目这几个月业务变化频繁,不断迭代的过程中,的确也出现了很多问题。最开始,业务比较简单,你写同一个工程里面写代码,我也在同一个工程里面写代码,测试完毕后,我这边就直接打成个war包(因为线上部署在tomcat的ROOT目录里面,我有时候直接在本地tomcat的ROOT里面解压缩成zip包),丢到线上服务器,简单方便,速度快的很,这种发包方式我们简称“全量部署”,哪怕你这次改一点点需求只动了一个类里面的一行代码,我也是将所有的代码打包一次,简单业务简单方法处理是没有问题,随着业务需求的累加,并且不断的迭代,这种打包方法隐患慢慢多了起来,有几次线上发包“全量部署”,出现之前OK的功能代码不OK(其实这次发布不涉及到这些功能),细查之,知道开发人员提交了没测试的代码,就算后面非常谨慎和宁愿操作麻烦想保持SVN代码的“纯洁性”,但是风险问题依然存在,后面一段时间,我改用了“增量部署”,就是这次改掉了哪几个类,哪几个文件,在发包文档里面一 一描述,发包的时候只去测试好的测试环境拿下来这几个文件,传到正式环境里面,稍微控了下风险。

当然,单体应用架构本身对应用服务器的性能消耗也没有做到很好的水平扩展,如果后期线上量大,我也只能单台的去升级配置,越到后面升级配置越贵,当然,我们目前的业务还没有这么夸张,但是随着业务的扩展,肯定无法避免这些东西。另外,数据库随着业务的水平扩展,业务的粒度细分,也不可能所有的表都在同一个数据库里面,这个也要求后期提前做好分库分表的架构准备。

我们生在一个微服务四处横行的年代,基本上属于那种不玩单体应用架构,就玩微服务架构,不玩微服务架构,就玩单体应用架构。如果再倒退10年,可能就玩SOA面向服务企业架构,虽然和微服务最终实现的目标差不多,但是SOA表现的方式更多是以系统级别的形式表现,系统与系统的交互,所以更多的是通过传统的webservice的调用来满足按照业务的拆分。好在当今有微服务众多的成熟框架,实现起来更加灵活简单,而且入门也相当简单,更主要的开发起来比SOA更加轻量级。并且这些成熟框架本身集成了微服务中需要解决的基础共用的东西在里面,比如微服注册与发现,路由网关,客户端负载均衡,传输协议等等。话虽如此,但是真正用微服务从头到尾开发过几个项目的开发人员并不多,我们连续好几个月也一直在招聘对微服务,服务化相对熟悉的人,也寥寥无几,来面试的人可能也就是在书上看了些资料,搭建个简单的框架,但是真正沉淀在实际业务场景用微服务开发的人员一直没遇到。

经过再三考虑,我们决定使用springcloud来开发V2.0版本,业务拆分全部微服务化实现,V1.0单体应用架构在这段时间里会小范围维护,集中精力大概用2,3个月时间完成V2.0版本的迭代,脑袋一蒙,后面的大把的坑在等着我们,我们也准备好了打场硬仗。

时间: 2024-10-13 20:13:53

我的物联网项目(十二) 单体应用架构不行?的相关文章

Myeclipse/STS 首次在本地部署配置一个Spring MVC 项目 (十二)

1. 在本地新创建一个文件夹 ,做为项目工作空间; 2. 用 Myeclipse 或 STS 进入该文件夹,该文件夹就成为项目的工作空间: 3. 就要进 窗口-首选项,配置: 环境默认编码: 1>. 常规下面 内容类型 .txt 文本 UTF-8 更新 2>. 常规 – 工作空间 , 文本文件编码 3>. 常规 – 编辑器 – 文本编辑器 – 拼写 配置 java JDK 为 项目需要的版本 比如 (1.7) : 配置 Myeclipse 下的 Servers 及 validation 

我的物联网项目(十) 线下之战

摇摇车这个行业在中国至少已经存在了7,8年以上,这期间也越来越多的投放商加入到这个队伍里面,说明这个行业本身是刚性需求,不要小看这一块钱现金流,如果投放的数量达到一定程度,每天的现金收入是非常可观的.这么来算(粗略的算),投放100辆车出去,每辆车每天消费15次也就是说每天赚15块钱,每天总收入有1500块钱,一个月总收入4万5.一辆车按照最低成本600一辆,100辆摇摇车成本大概在6万左右,按照这么算下来,100辆车投放出去2个月就回本 .当然投放出去放在商家店门口,商家也需要分成,就算按照对

电力项目十二--运行监控中添加进度条

应用场景: 1.文件上传.下载(IO流); 2.数据的导入导出: 3.大批量数据的增删改查: 4.远程数据的访问. 添加函数loading(); <%@ page language="java" pageEncoding="UTF-8"%> <%@taglib uri="/struts-tags" prefix="s" %> <!-- 添加标签,然后做栈顶获取数据 --> <html&

(转载)Android项目实战(三十二):圆角对话框Dialog

Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,Dia

第十二周项目3-摩托车继承自行车和电动车

#include <iostream> #include<conio.h> #include <windows.h> using namespace std; enum vehicleStaus {rest, running}; //车辆状态:泊车.行进 class vehicle //车辆类,虚基类 { protected: int maxSpeed; //最大车速 int currentSpeed; //当前速度 int weight; //车重 vehicleSt

第三十二课 二维数组及其定义 【项目1-2】

第三十二课  二维数组及其定义 项目一 [折腾二维数组] 创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后: 通过键盘输入,使后两列的10个元素获得值: 按行序优先输出数组元素: 将所有元素值乘以3后保存在数组中: 按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"): 将数组"倒"着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出): 输出数组中的所有偶数: 输出所有行列下标之和为3的倍数的元素值

我的物联网项目(二)初建团队

今年三月初也是机缘巧合下接触这个项目,说实话也是非常看好这个项目,以前做过企业级项目,互联网项目,但是物联网项目也是第一次接触,相关资料了解了下何为物联网,原来是物物相连的互联网,与传统行业相结合的互联网.首先简单描述下这个项目的主要业务: 摇摇车又称摇摆机,摇摆车,其实就是儿童投币那种摇摇车,是游乐设备中的一种,大多在路边商家门店,比如超市,母婴店较多,在一些商场也经常见到也有它的存在.存在即是合理,这里不过多讨论经济学的东西,我们其实要做到就是在传统的摇摇车身上赋予更多的使用方式,并连接互联

Android项目实战(十二):解决OOM的一种偷懒又有效的办法

原文:Android项目实战(十二):解决OOM的一种偷懒又有效的办法 在程序的manifest文件的application节点加入android:largeHeap=“true” 即可. 对,只需要一句话! 那么这行代码的意思是什么呢? 简单的说就是使该APP获取最大可分配的内存,以便解决OOM问题. 但是.OOM问题出现的原因总得来说有两点: 1.某个手机的内存真的很少 2.代码问题,比如没有处理好Bitmap图片的大小 可以说,出现OOM的情况基本都是第二种情况,那么就需要修改代码,看看哪

Android项目实战(三十二):圆角对话框Dialog

原文:Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话框的"确定"按钮 难点:1.对话框边框圆角显示 2.考虑到提示文本字数不确定,在不影响美观的情况下,需要在一行内显示提示的文字信息   3.设置对话框的宽和高 技术储备: 1.安卓开发_使用AlertDialog实现对话框    知道AlertDialog有setView(view) ,