千家信息网

怎么掌握框架组件

发表于:2025-11-16 作者:千家信息网编辑
千家信息网最后更新 2025年11月16日,本篇内容主要讲解"怎么掌握框架组件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么掌握框架组件"吧!为什么早期不建议自研?早期研发人数较少,公司也不确定
千家信息网最后更新 2025年11月16日怎么掌握框架组件

本篇内容主要讲解"怎么掌握框架组件",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么掌握框架组件"吧!

为什么早期不建议自研?

早期研发人数较少,公司也不确定能走多远,业务相对简单,业务以"快速迭代"为最高优先级,此时一般会选择"自己熟悉的技术"作为选型:

  • 研发语言:熟PHP选PHP,熟Java选Java

  • 数据库:熟MySQL选MySQL,熟SQL-server选SQL-server

  • 框架组件:熟Ruby on Rails选ROR,熟ThinkPHP选ThinkPHP,熟Spring boot才选

此时千万不要纠结选型,选自己熟悉的,业务以快速迭代为最优先,公司得先生存下来。

多说一句,此时对于技术合伙人的技术视野就有一定要求,如果早期方向不对,等公司发展若干年,数据量并发量上涨很多倍,成本以及未来的技术应对恐怕会有麻烦。

58同城早期选型是微软技术体系,后来数据量增大,并发量增大,机器数据库越来越多,性能扛不住,成本也扛不住(你猜一个SQL-server的licence一年多少钱?),后来CTO带领大家转型开源阵营,虽然阵痛了1-2年,但长远来说,绝对是正确的决策。

如今,如果你再创业,选云,选LAMP或者Spring,八成不会走太大的弯路。

随着规模的扩大,为什么要控制技术栈?

随着业务越来越复杂,研发人数越来越多,如果每个leader都选择自己擅长的框架,就会出现这样的情况:

  • 站点框架,team A用着SSH,team B用着Spring+SpringMVC+Mybatis;

  • 服务框架,team C用着REST,team D用着dubbo,team E用着thrift;

  • 数据库访问,team X用着mybatis,team Y用着DAO,team Z用着jdbc;

对于整体而言,跨部门的调用越来越麻烦,重复造的轮子越来越多,技术效率会逐步降低,研发+测试+运维成本都越来越高。

第一个观点:即使不自研,技术栈也请尽量统一。

统一了技术栈,为什么建议浅浅的封装一层?

统一了技术栈以后,如果不封装,redis官方Java客户端Jedis可能有这样一些接口:

String Memcache::get(String key) String Memcache::set(String key, String value) String Memcache::del(String key)

浅浅的封装一层,会变成这样:

String 58DaojiaKV::get(String key) {          String result = Memcache::get(key);          return result; } String 58DaojiaKV::set(String key, String value) {          String result = Memcache::set(key, value);          return result; } String 58DaojiaKV::del(String key) {          String result = Memcache::del(key);          return result; }

这有什么好处呢?

(1)对上游屏蔽底层实现的细节,调用方不用关注缓存是memcache还是redis,调用方只关注58DaojiaKV;

(2)底层变化的时候,对上游透明,当memcache不能满足需求,要切换为redis时,所有调用方不需要大的变化,升级一个最新的58DaojiaKV即可,58DaojiaKV的接口不变,实现变为:

String 58DaojiaKV::get(String key) {          String result = Jedis::get(key);          return result; } String 58DaojiaKV::set(String key, String value) {          String result = Jedis::set(key, value);          return result; } String 58DaojiaKV::del(String key) {          String result = Jedis::del(key);          return result; }

(3)统一实现一些通用的功能,就不需要每一个上游升级了,例如,要实现一个缓存访问时间统计的功能,所有调用方不需要大的变化,升级一个最新的58DaojiaKV即可:

String 58DaojiaKV::get(String key) {          Long startTime = now();          String result = Jedis::get(key);          Long endTime = now();          reportKVTime(startTime- endTime);          return result; } String 58DaojiaKV::set(String key, String value) {          Long startTime = now();          String result = Jedis::set(key, value);          Long endTime = now();          reportKVTime(startTime- endTime);          return result; } String 58DaojiaKV::del(String key) {          Long startTime = now();          String result = Jedis::del(key);          Long endTime = now();          reportKVTime(startTime- endTime);          return result; }

同理,如果要实现统一的告警,调用链跟踪,SQL执行时间,也可以用类似的方法。

第二个观点:第三方库,不但要统一,还可以浅浅的封装一层,预留未来的扩展性。

随着规模的进一步扩大,为什么需要适当的造一些轮子?

业务进一步发展,研发团队进一步扩张,虽然使用了统一的技术栈,但不同研发团队的痛点是极其类似的:

  • 有站点,监控服务的可用性,处理时间监控需求;

  • 有告警需求;

  • 有自动化发布,自动化运维需求;

  • 有服务治理,服务自动发现需求;

  • 有调用链跟踪需求;

  • 有SQL监控需求;

  • 有系统层面数据收集与可视化展现的需求;

此时,开源的框架可能满足不了需求了:

  • 开源框架/组件太重了,我们需要的可能只是一个轻量级的框架/组件;

  • 开源框架/组件,只能满足我们的一部分需求;

  • 不了解开源框架/组件的设计理念,要二次开发成本更高(维护dubboX的同学,维护数据库中间件Atlas的同学可以出来说两句);

  • 有些通用的需求是和业务紧密结合的,开源框架/组件可能满足不了;

此时,如果技术实力具备,可以统一研发一些框架和组件,解决所有技术团队的通用痛点,满足所有技术团队的通用需求。

第三个观点:适当造一些轮子。

到此,相信大家对"怎么掌握框架组件"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

框架 技术 需求 组件 统一 数据 业务 越来越 越来 团队 成本 数据库 封装 服务 公司 时间 观点 轮子 进一 升级 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哪里可以问到数据库问题 软件开发工程师转正申请 网络数据库如何创建视图 如何上传到服务器 交通银行总行软件开发待遇 mes系统软件开发框架 济南市戴尔服务器山东总代 三峡集团科研院 软件开发 柳州职业技术学院学网络安全 软件开发智慧城市蓝图 web应用兼容多种数据库 数据库外网访问测试 东莞市纵横软件开发 游戏服务器 地图数据 晋城同盟军网络技术有限公司 广安软件开发大概费用 全球公链app软件开发 保存数据库管理员的初始密码 龙之谷2手游服务器选择 证券软件开发上市公司 c++无法连接到数据库 西数+服务器管理面板 魔兽世界不同服务器声望 每年国家网络安全周在几月份举行 我的世界服务器模组配置文件修改 软件开发除了编码还有什么 数据库软件工程设计 网络安全问题监管记录表 数据库不存在数据冗余对吗 杭州天意网络技术有限公司
0