架构设计思考
一个大项目需要有人做全局的架构设计,也就是需要所谓的架构师,通过几个项目的历练,现对架构的设计做一些思考的整理。
一、架构设计要做的事情
1、横向切分抽象的层次和功能间的依赖关系,假设实现语言是java,产出可能是子工程、包名、子包名、接口名等。这一部分也涉及到选用哪些开源的组件或代码
2、纵向的切分子系统、子模块、服务等
3、各个部分间的交互和解耦,包括service层面的,也包括一个子系统内部的
二、客户端包括哪些可交互的东西
touch等硬件事件、UI和效果、timer等时间相关的逻辑、logic系统、model、网络交互
三、客户端几部分之间的交互和设计
MVC分离:硬件事件和UI交互(如果os已经封装好了控件很简单、如果没有封装好,需要自己设计event系统);UI被动刷新,是logic的观察者和反应者;logic(一般是单例或static函数)由timer、网络和UI(比如是否看过等UI上面的逻辑)驱动;timer和网络自我驱动,并分发事件;model为logic服务,提供cache、序列化、反序列化、加解密、持久化等服务;实际上核心就是一个观察者模式
四、android客户端的横向切分
1、基础功能
common
common.nio
common.log
common.compression
common.security
common.security.md5
common.security.rsa
common.security.des
.
.
.
2、服务封装
service.net
NetworkState isWIFIConnected之类的
service.http
AsyncWWW等,可以考虑 loopj框架
service.asyncIO
service.cache
MediaScanner
DiskLruCache
CacheManager
service.webview
service.versioncontrol
SOManager
service.sdk
service.sdk.share
service.sdk.share.weixin
service.sdk.share.weibo
service.sdk.pay
service.sdk.pay.alipay
service.sdk.push
service.sdk.push.baidu
service.sdk.login
service.statistics
Device
3、某一类app具有的服务,如视频app需要的服务
service.video.nativeplayer
service.video.ad
service.video.p2p
service.video.thumbnailer
service.video.subtitle
service.video.danmaku
service.video.drm
service.video.grey
4、app的mvc架构
frame
5、具体的app实现
app
app.base
BaseActivity
ActivityManager
BaseActivityLogic
app.impl.models
app.impl.logicSystem
app.impl.service
app.impl.api
app.impl.api.net
HttpClient
MsgFactory
app.impl.ui
app.impl.ui.fragment
app.impl.ui.animation
app.impl.ui.activity
app.impl.ui.adapter
app.impl.ui.custom
app.impl.ui.custom.control
app.impl.ui.custom.view
AsyncImageView
app.impl.ui.custom.layout
五、服务端包括哪些东西
数据持久化、cache、model、logic、网络框架和异步IO、timer
六、服务端几部分之间的交互
持久化、cache为model服务;网络和timer驱动logic;一般server会切分为service,service内部都是事件回调的触发logic,logic基于model等实现所谓的逻辑
七、基于TCP的服务端横向切分
1、基础封装
common
common.nio
common.log
common.compression
common.security
common.security.md5
common.security.rsa
common.security.des
common.executer
common.tcpPool
common.scheduler
common.asyncIO
common.IDGenerator
common.route
common.timer
2、服务和组件的封装
component.netty
AsyncTcp
component.redis
component.redis.connectionPool
component.mysql
component.mysql.connectionPool
component.load
component.config
component.bootstrap
component.loadbalance
component.heartbeat
component.sql
component.rpc
3、基础聚合
base.app
base.service
4、具体服务的实现
app
app.base
app.impl
app.impl.subsystem
- 浏览: 235555 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
saiyaren:
你对hiphop的深入程度到了什么程度了?想和你进行探讨一下
facebook hiphop php vm 实现概述 -
eric_weitm:
lj3362569 写道可以再讲具体点么?还有现有的hipho ...
facebook hiphop php vm 实现概述 -
lj3362569:
可以再讲具体点么?还有现有的hiphop不支持哪些功能?
facebook hiphop php vm 实现概述
发表评论
-
将博客搬至CSDN
2021-05-11 15:56 522现在决定搬到csdn https://blog.csdn.ne ... -
spring session 原理
2021-01-26 15:22 277spring-session-core 1、抽象注解、s ... -
几种分布式事务技术的比较
2020-09-04 18:20 5291、基于xa的2pc、 3pc: dbms实现的分布式事务, ... -
camunda 源代码解析(一)
2020-03-06 17:53 2585壹 基本概念 一、任 ... -
spring cloud gateway 分析一 主流程和层次
2020-02-14 19:27 496一、debug的调用栈如下: DispatcherHand ... -
Kubernetes与spring cloud的结合使用
2019-07-19 09:53 5521、利用namespaces对不同环境进行区分,建立不同d ... -
maven相关
2019-05-06 10:50 3721、dependency scope: compile ... -
mybatis-plus-3.0 通用crud实现原理
2019-04-10 18:28 864mybatis-plus-3.0 通用crud ... -
B端产品学习笔记
2018-12-01 22:25 766B端产品学习笔记 一、B端产品分类:协作办公 即时通讯 企 ... -
消息队列mq的3个使用场景
2018-09-01 19:11 2939一、抵御流量洪峰, ... -
大数据、数据仓库和ETL
2018-07-27 20:50 4337一、背景 大量原来线下的业务电子化之后,产生了 ... -
单机与分布式的组件差异
2018-07-25 15:51 666一、单机程序 1、用内存进程队列实现解耦合和异步 ... -
Webmagic 内部实现
2018-07-23 11:51 823Webmagic 内部实现 1、Site的地位是全局的s ... -
大数据数据仓库 《大数据之路:阿里巴巴大数据实践》 读书笔记
2018-07-17 18:11 821一、基本概念 1 ... -
ElasticSearch 三 建立索引快的原因
2018-07-09 18:02 792https://blog.csdn.net/u010994 ... -
ElasticSearch 二 查询快的原因
2018-07-09 17:25 2404https://www.jianshu.com/p/ ... -
ElasticSearch 一 基本概念
2018-07-09 17:22 4681、Indices 索引,类似于mysql的Database ... -
java spi机制
2018-06-22 19:48 338在spring出现之前,需要使用IOC的机制来动态提供实现类 ... -
mysql事物隔离与死锁
2018-06-14 19:22 493一、事物 0、事物的ACID:原子性、一致性、隔离性(不 ... -
关于java log框架
2018-05-17 09:46 528log4j:最传统的log框架,核心概念 Logger a ...
相关推荐
《思考软件,创新设计——A段架构师的思考技术》介绍当今全球正蔚为风潮的设计思考(Design Thinking)技术,陪伴你从目前的编程或设计岗位进入架构设计(A段和B段),踏上灿烂的软件(程序)生涯的新旅程。...
软件架构设计分层模型和构图思考.docx
家族企业股权架构优化思考建议及设计方案.doc
比较全面的阐述嵌入式系统软件架构设计的资料,pdf版本,文字版,完整无广告。 本课程是针对嵌入式软件开发的特点,讨论架构设计的思路和方法。试图给大家提供一种思想,启发大家的思维。框架,自动化代码生成和...
聊聊系统架构,讨论设计方法,结合实例,并按存储、分布式、服务、计算模型等方面做简要介绍
在项目较小时,这个架构是完全可以满足开发需要的,也是容易推进的。但是开发过程中缺少组件化的考量,随着产品线的扩展和人员流动,对项目不熟悉和开发规范不够严谨,造成业务模块依赖关系非常复杂,主要有三类耦合...
百度林仕鼎:架构设计的一些思考.pdf 新手看不太明白 因为都没怎么用到,工作久了才看吧
大厂架构设计及转型解决方案合集(19份),供大家学习参考: 58速运智能派单系统的架构演进.ppt Cloud Native架构一致性问题及解决方案(45页).pptx 七牛云大数据平台的架构与演进(43页).pdf 架构师技术领导力...
以史为鉴,对我们了解架构设计的目的很有帮 助。谈到架构设计,相信每个技术人员都是耳熟能详,但如果深入探讨一下,“为何要做架构设 计?”或者“架构设计目的是什么?”类似的问题,大部分人可能从来没有思考过,...
2019年最新阿里架构设计资料,包括 C端服务端渲染(SSR)和性能优化实践.pdf Dubbo Mesh Service Mesh的本质、价值和应用探索.pdf Flink 阿里技术架构.pdf JAVA性能调优.pdf Kubernetes 指南.pdf OceanBase:云时代...
如果你正在思考下面这些问题,也许《Spring技术内幕:深入解析Spring架构与设计原理》就是你想要的! 掌握Spring的架构原理与设计思想真的能让开发者如虎添翼吗? IoC容器如何掌控以POJO为基础的Bean对象?它...
本文尝试从现代系统架构的不确定性和复杂性应对办法的探讨
高并发直播系统服务端架构设计与思考.pdf
《Microsoft .NET企业级应用架构设计》由两位企业级系统开发专家执笔,会告诉你如何用各种模式和技术来控制项目的复杂性,让系统更易于编写、维护和升级。 读者会得到实用的架构方面的指导,包括: ·在早期设计...
总结了云服务的理解和架构原则,并且以具体设计实践为例,描述了整个架构设计的全流程、流程中的具体细节,通过对本文观点和实践的阐述,将有助于金融科技工作者的云服务架构设计和对未来云架构的思考。
Java微服务架构在邮政移动互联网应用研发设计中的思考与实践
千万级用户直播App服务端架构设计和思考 应急响应 系统安全 威胁情报 安全体系 系统安全
Java微服务架构在邮政移动互联网应用研发设计中的思考与实践.pdf
架构师(Architect)的职责就是创意设计与人际沟通。...这提醒了我们,身为架构师,其图形绘制和思考能力愈好,其创意设计与人际沟通能力就愈好。 因此,培养 Android 架构师的图形思考能力是极为重要的。
前端团队管理 前端基础架构的实践和思考 共22页.pdf