
System Architecture
文章平均质量分 85
微观技术
一个讨厌内卷的码仔
展开
-
提高「程序员」的思维方式
流程模板的制定非常考验大家的思维能力,尤其是一个全新的陌生领域。我们不可能所有的事情都经历过,当面对一个陌生的、棘手的任务,我们希望有一定的方法论、工具包可以指引我们, 使我们可以有条不紊的开展工作。我们日常的工作汇报中,不论是 PPT 还是邮件,能用数字量化的尽量用数据来表达,比起苍白的语言,数据清爽又让人无法反驳,我们要学会用数据武装自己,增强自己的说服力。作为研发人员,我们就以软件项目开发为例,从客户问题收集、市场调研,产品同学分析整理成需求文档,业务和技术侧的可行性分析,到开发编码,系统发布上线。.原创 2022-08-31 16:39:54 · 595 阅读 · 0 评论 -
前台、中台、后台的定位分别是什么?
大家好,我是Tom哥~今天跟大家聊聊中台,欢迎留言讨论中台最早是由阿里巴巴推动在国内火起来的,早在2015年,马云带领阿里多位高管拜访芬兰著名的游戏公司Supercell,看到平均一款游戏落地只需要5~7人,被这种高效工作模式触动。于是,开始在公司内部尝试“大中台,小前台”的架构模式,诞生了阿里巴巴中台战略。经过15、16两年的时间孕育,在2017年,中台的声音越来越大,很多大厂开始开始搞中台建设,市面上关于中台建设的分享经验也多了起来。中台极大的释放了企业创新和变革的能力,像阿里的盒马、钉钉都是阿里中台创原创 2021-10-22 00:02:51 · 4956 阅读 · 1 评论 -
【高并发、高性能、高可用】系统设计经验
知识分享,以技会友。大家好,我是Tom哥。阅读本文大约需要 15 分钟。软件开发通常会提到一个名词 “三高”,即高并发、高性能、高可用。具体的指标定义,如:高并发方面要求QPS 大于 10万;高性能方面要求请求延迟小于 100 ms;高可用方面要高于 99.99%。接下来,我们重点来介绍这 三高高并发我们使用 QPS(Queries Per Second,每秒查询率)来衡量系统承载能力。架构策略有哪些?1、负载均衡正所谓双拳难敌四手,高并发撑场面的首选...原创 2021-06-13 00:20:01 · 1073 阅读 · 0 评论 -
学会这10个设计原则,离架构师又进了一步!!!
知识分享,以技会友。大家好,我是Tom哥。阅读本文大约需要 15 分钟。闲言碎语:一个懂设计原则的程序猿,写出来的代码可扩展性就是强,后续的人看代码如沐春风。相反,如果代码写的跟流水账似的,完全一根筋平铺下来,后续无论换谁接手维护都要骂娘。做软件开发多年,CRUD仿佛已经形成一种惯性,深入骨髓,按照常规的结构拆分:表现层、业务逻辑层、数据持久层,一个功能只需要个把小时代码就撸完了。再结合CTRL+C和CTRL+V绝世秘籍,一个个功能点便如同雨后春笋般被快速克隆实现。...原创 2021-06-13 00:12:28 · 2621 阅读 · 0 评论 -
面试题:mysql 表删除一半数据,B+树索引文件会不会变小???
大家好,我是Tom哥~今日寄语:努力的阶段,往往是最不养生的阶段!一张千万级的数据表,删除了一半的数据,你觉得B+树索引文件会不会变小?(答案在文章中!!)我们先来做个实验,看看表的大小是如何变化的??做个实验,让数据说话1、首先,在mysql中创建一张用户表,表结构如下:CREATETABLE`user`(`id`bigint(20)NOTNULLAUTO_INCREMENT,`user_name`varch...原创 2021-06-12 23:07:42 · 491 阅读 · 0 评论 -
业务视角谈谈Kafka(第一篇)
前言Kafka作为一款开源的消息引擎,很多人并不陌生,但深入其源码的同学估计不多,除非你是中间件团队消息系统维护者。但术业有专攻,市面上那么多开源框架且每个框架又经常迭代升级,花精力深入了解每一个框架源码不太现实,本文会以读书会视角,从业务角度罗列工作中大家需要熟知的一些知识为什么使用kafka•削峰填谷。缓冲上下游瞬时突发流量,保护“脆弱”的下游系统不被压垮,避免引发全链路服务“雪崩”。•系统解耦。发送方和接收方的松耦合,一定程度简化了开发成本,减少了系统间不必要的直接依赖。名词术语原创 2021-05-06 20:33:56 · 1032 阅读 · 1 评论 -
Stream 流解读
java.util.Stream可以对元素列表进行一次或多次操作。Stream操作可以是中间值也可以是最终结果。最后的操作返回的是某种类型结果,而中间操作返回的是stream本身。因此你可以在一行代码链接多个方法调用。Streams被创建于java.util.Collection,比如 list or set (map 并不支持)。Stream可以顺序执行,也可以并行执行。•中间操作:filter、map、mapToInt、mapToLong、mapToDouble、flatMap、sorte...原创 2021-05-06 19:41:59 · 1705 阅读 · 0 评论 -
为什么放弃Kafka,选择Pulsar?
导读:Pulsar 声称比 Kafka 更快、运行成本更低、解决了很多 Kafka 的痛点。 具有实时、可靠、持久化的数据跨域复制,跨网段、跨机房的实时同步,对于容器化及容器编排技术的友好内容首发在为微信公众号《微观技术》,同步在开发者头条APP中,并入选精选,收获了75个赞、88个收藏,在2021年4月21日的所有入选精选文章中,排名第一另考虑到spring boot 的广泛受众群体,整理了一个基于spring boot的常用中间件快速集成入门系列手册,包含Mybatis、drui.原创 2021-04-23 06:58:11 · 494 阅读 · 1 评论 -
10分钟掌握RocketMQ的核心知识
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学请提前关注&收藏前言Apache RocketMQ 是阿里开源的一款高性能、高吞吐量的分布式消息中间件。RocketMQ主要由 Producer、Broker、Consumer 三部分组成,其中Produce.原创 2021-04-02 00:14:35 · 542 阅读 · 1 评论 -
高性能本地缓存组件 Caffeine Cache
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学请提前关注&收藏Redis 作为分布式缓存组件提供多个服务间的缓存,但是 Redis 需要网络开销,增加耗时。本地缓存是直接从本地内存中读取数据,没有网络开销,性能更高,例如秒杀系统或者数据量小的缓存等,比远程缓存更.原创 2021-04-02 00:11:30 · 941 阅读 · 1 评论 -
Spring Boot 集成 本地缓存Guava框架
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学请提前关注&收藏本地缓存一般位于应用服务器的部署机器上,使用应用服务器本身的少量内存。它是应用层获取数据的第一道缓存,应用层获取数据时先访问本地缓存,如果未命中,再通过远程从 L1 缓存层获取,最终获取到的数据再预热.原创 2021-04-02 00:07:51 · 1135 阅读 · 1 评论 -
业务无侵入框架Seata, 解决分布式事务问题
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学请提前关注&收藏事务的原子性和持久性可以确保在一个事务内,更新多条数据,要么都成功,要么都失败。在一个系统内部,我们可以使用数据库事务来保证数据一致性。那如果一笔交易,涉及到跨多个系统、多个数据库的时候,用单一的数据.原创 2021-03-31 09:51:28 · 703 阅读 · 0 评论 -
ShardingSphere解决海量数据分库分表
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学请提前关注&收藏互联网高速发展,同时也带来的海量数据存储问题。传统关系型数据库的单库单表已经很难支撑,如何高效存储和访问这些数据,成为业内急需解决的问题。解决思路有两个方向: NoSQL数据库,非关系型数据库,.原创 2021-03-17 09:29:48 · 893 阅读 · 3 评论 -
【架构】如何借助Proxy代理,提升架构扩展性
我们都知道HTTP协议本身是无状态的,前后两次请求没有直接关联。但有些业务功能比较特殊,比如发起一次http请求创建一笔订单,前提要求用户先登录,为了解决这个问题,http协议header中引入了Cookie,存储上下文信息,传递登录状态。同理,服务器也有状态之分,取决于服务器是否有存储数据,还是纯计算节点场景:现在有这么一个业务场景,用户发出请求,指令随机打到了一台服务器,比如174.56.102.101,但根据索引条件,数据实际存储在174.56.102.102或者174.56...原创 2021-03-14 00:33:51 · 386 阅读 · 3 评论 -
Redis 实现分布式锁真的安全吗?
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏锁的种类非常多。之前写过一篇文章,对工作中常用锁做了总结,如:乐观锁、悲观锁、分布式锁、可重入锁、自旋锁、独享锁、共享锁、互斥锁、读写锁、阻塞锁、公平锁、非公平锁、分段锁、对象锁、类锁、信号量、行锁。.原创 2021-03-14 00:29:10 · 1155 阅读 · 2 评论 -
开箱即用,一键集成 Redis 缓存
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏简介Redis 是一个开源、高级的键值存储和一个适用的解决方案,用于构建高性能,可扩展的 Web 应用程序。支持更丰富的数据结构,例如 String、List、hash、 set、 zset 等,同.原创 2021-03-14 00:15:11 · 1552 阅读 · 8 评论 -
数据库连接池为什么首选Druid
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏1、简介Druid是阿里巴巴的一个开源项目,号称为监控而生的数据库连接池,在功能、性能、扩展性方面都超过其他,例如 DBCP、C3P0、BoneCP、Proxool、JBoss、DataSource.原创 2021-03-14 00:12:14 · 966 阅读 · 4 评论 -
Spring Boot 集成 Mybatis
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏1、简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简.原创 2021-03-13 23:45:12 · 261 阅读 · 3 评论 -
第一次带团队,感觉很慌怎么办?
「初入管理个人感受:」有些同学技术扎实,为人热情,熟悉业务与系统,基于工作中的出色表现,被提拔成为团队Leader。当角色发生变化后,工作内容随之也发生了变化,每天要参加各种产品需求会、技术方案讨论会、复盘会,定期还跟老板的汇报工作等,同时还要负责团队的日常管理、工作安排,搞的焦头烂额,晕头转向,「感觉不像coding时那么有成就感了,甚至有种失控的感觉!」另外随着时间的积累,原来的技术还有可能落下,更加重了自己的焦虑感。初入管理,很多人都有类似感觉,感觉深陷泥潭。那么到底要不要走管理路线?你是原创 2021-03-13 23:44:00 · 615 阅读 · 2 评论 -
SpringBoot整合高性能微服务框架 gRPC
Spring Boot 作为主流微服务框架,拥有成熟的社区生态。市场应用广泛,为了方便大家,整理了一个基于spring boot的常用中间件快速集成入门系列手册,涉及RPC、缓存、消息队列、分库分表、注册中心、分布式配置等常用开源组件,大概有几十篇文章,陆续会开放出来,感兴趣同学可以关注&收藏1、简介在 gRPC 里,客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得我们能够更容易地创建分布式应用和服务。gRPC 基于 HTTP/2 标准设计,带来诸如双.原创 2021-03-13 23:35:57 · 1401 阅读 · 2 评论 -
Spring Boot 集成 ElasticSearch,实现高性能搜索
1、ElasticSearch介绍Elasticsearch 是java开发的,基于 Lucene 的搜索引擎。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful Web接口。Elasticsearch 可以快速有效地存储,搜索和分析大量数据,而且在处理半结构化数据(即自然语言)时特别有用。应用集成Elasticsearch有4种方式: REST Client Jest Spring Data Spring Data Elasticsearch Rep原创 2021-03-13 23:29:54 · 585 阅读 · 3 评论 -
框架扩展:注解 RPC Consumer属性动态注入
分布式系统架构时代,RPC框架你一定不会陌生。目前主流的RPC框架有 dubbo、thrift、motan、grpc等。消费端(RPC Consumer)通常只有服务接口定义,接口的业务逻辑实现部署在生产端(RPC Provider),服务调用一般是采用动态代理方式,通过Proxy创建一个代理类,借助增强方式完成网络的远程调用,获取执行结果。这里有两个关键点:1、如何实现一个通用的代理类?2、如何在消费端动态注入接口的代理对象?如何实现一个通用的代理类?目前动态代理的实现方案有很多种原创 2021-03-13 23:25:27 · 2012 阅读 · 8 评论 -
作为技术团队TL,如何运用OKR提高团队产出
作为一个团队负责人,如何提升团队的产出?OKR可能会给出一些答案。OKR诞生在Intel,随着Google的大规模使用而名声大噪。OKR作为一个科学的目标管理法,由O和KR两部分组成,其中O表示目标(Objective),KR表示关键结果(Key Result)。如果采用数据ER图来描述,O和KR的关系是一对多。一个目标的实现,中间要经历一系列的过程,并产出一堆的关键结果。若干结果累积才达到最终的目标。越来越多的公司推行OKR,那他的优势到底是什么? 目标明确,与公...原创 2021-03-13 23:21:03 · 1495 阅读 · 1 评论 -
函数式编程是如何提升代码的扩展性
软件的发展大致经历三个阶段 第一阶段(20世纪40年代中期到50年代中期),主要是科学与工程计算,处理对象为数值数据,以个体方式使用机器(或汇编)语言编制程序 第二阶段(20世纪50年代中期到60年代后期),从高级程序设计语言出现到软件工程提出以前。这个阶段研究对象增加了并发程序,并着重研究高级程序设计语言、编译程序、操作系统以及各种支撑软件和应用软件 第三阶段(20世纪60年代后期软件工程提出以来),由于大型软件的开发耗时耗力,任务重,需要采用合作的方式才能完成,所以引入软.原创 2020-08-31 23:22:15 · 699 阅读 · 0 评论 -
深入剖析优惠券核心架构设计
很多网站都有优惠券业务,但是剖析优惠券架构的技术文章却很少,优惠券看似简单,但内部涉及用户、商品、平台、店铺等综合维度下各种营销玩法,复杂度一下会提高很多。所以写了这篇文章来看看优惠券是如何技术架构的。IT 界有句名言,”talk is cheap, show me the code“。废话不都说,开始进入正题我们先简单了解下优惠券都包含哪些重要信息,做了个优惠券信息的思维导图优惠券创建完成后,接下来就是透出、使用。透出涉及的位置很多,比如活动会场、开机屏,但流量最大...原创 2020-08-02 10:49:58 · 5528 阅读 · 1 评论 -
淘宝订单自动确认收货的N种实现,秒杀面试官
在这个电子商务流行年代,24小时随时随地网购已经成为我们习以为常的生活习惯。看到不错的商品,我们会立即下单,完全不受时间、空间的限制,剁手,然后在家坐等收快递,那种感觉。。。。细心的你是否发现,我们好像很少去主动点击‘’确认收货”,毕竟拿到了货,我总要先体验几天,谁知道它会不会坏,但时间一拖就忘了操作确认收货。而担保交易,如果买家不确认收货,交易订单无法完结,那商家是收不到货款的。有什么解决办法?上面示图是淘宝APP的订单详情页,左上方的自动确认时间起到了关键作...原创 2020-08-02 10:40:21 · 8014 阅读 · 0 评论 -
单台 MySQL 支撑不了这么多的并发请求,我们该怎么办?
关系型数据库的事务特性可以帮我们解决很多难题,比如数据的一致性问题,所以常规业务持久化存储都会mysql 来兜底。但mysql 的性能是有限的。当业务规模发展到上百万用户,访问量达到上万QPS时,单台mysql实例很难应付。有哪些解决方案?1、首先我们会想到给数据库找一个搭档,也就是缓存目前市面上经典组合是mysql+redis。Redis 作为 MySQL 的前置缓存,可以替 MySQL 挡住绝大部分查询请求,很大程度上缓解了 MySQL 并发请求的压力。Redis 是一...原创 2020-07-30 23:33:04 · 1112 阅读 · 0 评论 -
如何打造一个高效的研发团队
互联网公司的成功很大一部分归结为人才储备,如何打造有活力、持续创新的研发团队,相信很多管理者都比较关心。下面我们从业务支撑、技术架构、团队建设这几个方面做简单剖析业务支撑快速发展已经成为互联网公司的一种常态,那么在这么快的节奏下,如何快速支撑业务?尤其是在资源紧缺的情况下,既要做业务,也要做系统优化升级。确实很难做取舍。我的观点是看公司的规模,如果是创业早期,活下来才是第一要素,我们会将业务分为日常项目和重点项目。所谓重点项目就是能影响市场抢占度,甚至影响公司生死的项...原创 2020-07-30 23:29:47 · 3357 阅读 · 0 评论 -
如何第一时间发现线上故障
现在的研发工作越来越难做了,996、007,有事没事就要来公司加个班已经成为家常便饭,好像非工作时间不来公司露个脸现个身,就显得不求上进。身体累,心更累,就怕哪一天,一不小心倒在工作岗位,这还不算够惨,哪天运气不佳,再来个客户投诉,给万恶的资本家找到由头,给你年终考核定个不及格,没有年终奖,卧槽,真是一年白干,欲哭无泪。有没有什么策略,可以规避这种问题。线上问题大部分都是客户投诉上来的,根据问题的严重程度,影响着投诉面大小。如果有套监控系统(数据核对平台)就好了,可以第一时间发现问...原创 2020-07-30 23:28:02 · 929 阅读 · 0 评论 -
如何设计一个高并发网关
前言Gateway 是一个服务器,也可以说是进入系统的唯一节点。这跟面向对象设计模式中的 Facade 模式很像。Gateway 封装内部系统的架构,并且提供 API 给各个客户端。主要模块:授权、监控、负载均衡、缓存、熔断、降级、限流、请求分片和管理、静态响应处理,等等。核心设计 请求路由 对于调用端来说,也是一件非常方便的事情。因为调用端不需要知道自己需要用到的其它服务的地址,全部统一地交给 Gateway 来处理。 服务注册 为了能够代理后面的服务,并...原创 2020-07-30 23:22:25 · 1186 阅读 · 0 评论 -
电商交易系统核心技术
前言电商诞生已经有20多个年头了,从早期很多人的质疑、骗子、不接受、甚至肄业排斥、打压,到现在彻底融入我们生活的方方面面,并号称中国的“新四大发明”,“认知教育”使命已经完成。人们足不出户,网上下个单,就可以在家坐等收包裹,确实是一种享受。今天就跟大家聊聊电商技术里面最重要的交易部分核心模块 购物车 下单 付款 库...原创 2020-02-16 10:06:56 · 3078 阅读 · 0 评论 -
Dubbo框架常见问题
在分布式架构时代,dubbo 作为RPC框架,以其高性能、易扩展、配置简单、易上手被越来越多的公司所青睐,在国内互联网公司中口碑一直很好。因为其高频使用,很多面试官会考察dubbo相关知识,框架原理很多人都能说出个一二来,但实用性不强。本文就日常工作中dubbo常见的错误及解决方案做了梳理。感兴趣的同学可以加收藏。????1、服务注册不上怎么办?•检查暴露服务的 Spring 配置有没...原创 2020-01-26 11:39:33 · 1034 阅读 · 0 评论 -
如何解决分布式事务
事务有四个特性:原子性、一致性、隔离性、持久性。这四个属性通常称为 ACID随着分布式架构理念提出,软件系统架构开始迈入一个新时代。一个臃肿的应用会拆分出若干个微服务中心,按业务域维度划分系统边界,大家各司其职,在自己负责的领域深耕细作,可谓好处多多。但同时也增加了系统复杂度,每个子业务系统都涉及数据库操作,如何解决分布式事务是一个绕不开的话题。什么是分布式事务,一句话概括:分布式事务...原创 2020-01-23 15:06:36 · 965 阅读 · 0 评论 -
网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
一篇不错的关于网站架构的文章,可以让你对网站的架构有一个初步的了解1、HTML静态化其实大家都知道,效率最高、消耗最小的就是纯静态化的html页面,所以我们尽可能使我们的网站上的页面采用静态页面来实现,这个最简单的方法其实也是最有效的方法。但是对于大量内容并且频繁更新的网站,原创 2011-09-14 09:00:58 · 4399 阅读 · 1 评论 -
大型网站架构演变和知识体系
之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难明白为什么一个网站需要那么复杂的技术,于是有了写这篇文章的想法,在这原创 2011-07-26 18:42:17 · 2920 阅读 · 0 评论 -
软件架构师成长之路
成为一名架构师是我一直以来的梦想。这篇文章写的很不错,架构师之路不是一帆风顺的,需要平时的积累,是一个漫长的成长过程,转载这篇文章,希望能一直激励自己,加油。对于任何一个软件开发人员来说,架构师都是一个令人向往的角色。就连世界首富比尔盖茨在2000年卸任公司CEO的同时,也担转载 2011-10-07 22:46:14 · 973 阅读 · 0 评论 -
web高性能开发系列随笔
1、 HTTP服务器.2、性能测试工具推荐3、 图片篇.4、 如何加载JS,JS应该放在什么位置.5、 为什么要减少请求数,如何减少请求数.6、 减少请求,响应的数据量.7、JS、CSS的合并、压缩、缓存管理8、页面呈现、重绘、回流。9、该如何加载google-analytics(或其他第三方)的JS.原创 2011-10-21 13:39:58 · 968 阅读 · 0 评论 -
大型互联网站解决海量数据的常见策略
信息时代,海量数据处理已成为一个老话题,今天看到一篇不错的文章,分享给大家 大型互联网站的数据存储与传统存储环境相比不仅是一个服务器、一个数据库那么简单,而是由网络设备、存储设备、应用服务器、公用访问接口、应用程序 等多个部分组成的复杂系统。分为 业务数据层、计算层、数据仓储、数据备份,通过应用服务器软件提供数据存储服务,并且通过监控工具对存储单元监控。 随着系统中用户数据量的线转载 2011-12-11 16:37:56 · 3341 阅读 · 0 评论 -
需求设计(询价信息违规处理)
最近被老大安排到bing小组,临时支持下业务需求,接到一个需求是这样的:有供应商借助求购这个渠道,进行一些违纪操作(发布广告信息、违纪信息、重复信息)。这些信息对整个的求购市场带来了不良的影响。因此需要在后台增加一个人工的审核流程,一旦这些信息被查实,该会员将会被加入到黑名单。后续发信息的流程中会增加一个黑名单过滤流程。具体的设计如下: 首先根据条件(业务类型、是否在途)从反馈表中查找记录原创 2011-10-02 22:29:11 · 1201 阅读 · 0 评论 -
消息模式
最近看到一个应用,虽然代码量不大,但设计却很新颖,有种麻雀虽小,五脏俱全的感觉,在这跟大家分享下先看下大致结构:其中1. AsyncWorker:抽象的业务接口,提供了doWork方法,具体的业务处理逻辑由子类来封装2. AbstractNapoliWorker:总控制器a) 定义泛型,由子类来控制解析出来的消息类型,自由灵活。b)对doWork方法初步原创 2013-03-21 09:27:52 · 1444 阅读 · 0 评论