架构设计思考
一个大项目需要有人做全局的架构设计,也就是需要所谓的架构师,通过几个项目的历练,现对架构的设计做一些思考的整理。
一、架构设计要做的事情
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
- 浏览: 242712 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 567现在决定搬到csdn https://blog.csdn.ne ... -
spring session 原理
2021-01-26 15:22 330spring-session-core 1、抽象注解、s ... -
几种分布式事务技术的比较
2020-09-04 18:20 5941、基于xa的2pc、 3pc: dbms实现的分布式事务, ... -
camunda 源代码解析(一)
2020-03-06 17:53 2997壹 基本概念 一、任 ... -
spring cloud gateway 分析一 主流程和层次
2020-02-14 19:27 559一、debug的调用栈如下: DispatcherHand ... -
Kubernetes与spring cloud的结合使用
2019-07-19 09:53 6041、利用namespaces对不同环境进行区分,建立不同d ... -
maven相关
2019-05-06 10:50 4371、dependency scope: compile ... -
mybatis-plus-3.0 通用crud实现原理
2019-04-10 18:28 913mybatis-plus-3.0 通用crud ... -
B端产品学习笔记
2018-12-01 22:25 805B端产品学习笔记 一、B端产品分类:协作办公 即时通讯 企 ... -
消息队列mq的3个使用场景
2018-09-01 19:11 2992一、抵御流量洪峰, ... -
大数据、数据仓库和ETL
2018-07-27 20:50 4388一、背景 大量原来线下的业务电子化之后,产生了 ... -
单机与分布式的组件差异
2018-07-25 15:51 711一、单机程序 1、用内存进程队列实现解耦合和异步 ... -
Webmagic 内部实现
2018-07-23 11:51 875Webmagic 内部实现 1、Site的地位是全局的s ... -
大数据数据仓库 《大数据之路:阿里巴巴大数据实践》 读书笔记
2018-07-17 18:11 857一、基本概念 1 ... -
ElasticSearch 三 建立索引快的原因
2018-07-09 18:02 836https://blog.csdn.net/u010994 ... -
ElasticSearch 二 查询快的原因
2018-07-09 17:25 2463https://www.jianshu.com/p/ ... -
ElasticSearch 一 基本概念
2018-07-09 17:22 5051、Indices 索引,类似于mysql的Database ... -
java spi机制
2018-06-22 19:48 374在spring出现之前,需要使用IOC的机制来动态提供实现类 ... -
mysql事物隔离与死锁
2018-06-14 19:22 551一、事物 0、事物的ACID:原子性、一致性、隔离性(不 ... -
关于java log框架
2018-05-17 09:46 568log4j:最传统的log框架,核心概念 Logger a ...
相关推荐
软件架构设计分层模型和构图思考 软件架构设计是一个复杂的问题,需要架构师具备系统思维、结构化思维、编程思维等多种思维模式。架构设计的核心作用是建立业务现实世界和抽象的 IT 实现之间的一道桥梁,要求架构师...
根据提供的标题、描述以及部分文档内容,我们可以提炼出关于架构设计的重要知识点,主要涉及存储、分布式、服务和计算模型等方面。 ### 架构设计的重要考量因素 #### 1. **存储设计** - **数据布局**:数据如何在...
《思考软件,创新设计——A段架构师的思考技术》介绍当今全球正蔚为风潮的设计思考(Design Thinking)技术,陪伴你从目前的编程或设计岗位进入架构设计(A段和B段),踏上灿烂的软件(程序)生涯的新旅程。...
### 现代架构设计需求和方案思考 #### 传统稳定架构设计方案的局限性 在传统的架构设计中,人们往往采用一种稳定不变的设计方案来应对不断变化的业务需求。这种设计通常包括分层架构(如数据层、服务层、中间件层...
比较全面的阐述嵌入式系统软件架构设计的资料,pdf版本,文字版,完整无广告。 本课程是针对嵌入式软件开发的特点,讨论架构设计的思路和方法。试图给大家提供一种思想,启发大家的思维。框架,自动化代码生成和...
《系统架构设计师历年真题详解》 系统架构设计师这一职业在信息技术领域中扮演着至关重要的角色,他们负责设计和规划企业或组织的信息系统结构,确保其高效、稳定且易于扩展。为了帮助备考者深入理解这一职位的要求...
在互联网技术领域,架构设计是构建高效、稳定且可扩展系统的基石。本文将深入探讨互联网技术架构设计的一些核心原则和概念,旨在提升架构思维并优化系统设计。 首先,我们需要理解“道”与“术”的关系。道是事物的...
在IT行业中,架构设计是构建复杂软件系统的关键环节,它涉及到如何组织和管理代码,以及如何确保系统的可扩展性、可维护性和性能。这两本经典书籍——《设计原本》和《架构之美》提供了深入的洞察力,帮助读者理解并...
《2022年系统架构设计师考试:深度解析与备考指南》 系统架构设计师考试是一项针对信息技术专业人士的重要认证,旨在评估和验证考生在设计、构建和优化复杂系统架构方面的技能和知识。2022年的考试无疑是对考生们...
标题和描述中的“百度林仕鼎:架构设计与架构师(演讲稿)”明确指出了本次分享的主题聚焦于架构设计及其对于架构师角色的意义。在IT领域,尤其是软件开发和系统构建过程中,架构设计扮演着至关重要的角色,它不仅...
总结,架构设计文档实例为我们揭示了一个成功的核心支撑系统背后的架构思考和决策过程。通过对各个方面的深入剖析,我们可以学习到如何构建一个稳健、可扩展且高效的系统,这对于任何IT专业人士来说都是宝贵的知识...
《系统架构设计师考试真题详解》 在信息技术领域,系统架构设计师是一个至关重要的角色,他们负责设计、规划和实施复杂的计算机系统,确保系统的高效、稳定和可扩展性。为了培养和选拔这一领域的专业人才,我国自...
前端团队管理与前端基础架构的实践和思考 前端团队管理是指在软件开发过程中,负责前端开发的团队如何更好地发挥职能作用,提高团队的效率和质量。本文将探讨前端团队的职能转变、前端基础架构的构建和实施,以及...
本篇将基于标题"架构设计一些思路"和提供的标签"源码"、"工具",结合压缩包内的文件名,探讨一些架构设计的实践与思考。 首先,我们看到一个名为`HttpClientUtil.java`的文件,这通常意味着它是一个HTTP客户端工具...
《系统架构设计师历年真题2009-2018有答案和解析》这个压缩包文件是针对软考(全国计算机技术与软件专业技术资格(水平)考试)中"系统架构设计师"这一高级职称的备考资源。这个压缩包包含自2009年至2018年间的全部...
《系统架构设计师考试辅导资料》是一份全面的备考资源,包含三部分:《系统架构设计师教程(第4版)》、《历年系统架构设计师考试试题分类精解(综合知识篇)》以及《历年系统架构设计师考试试题分类精解_案例分析与...
《系统架构设计师试题及答案详解》是一份针对2011年下半年系统架构设计师考试的重要参考资料。这份压缩包包含了综合知识试题、案例分析以及论文题目及其详细的解答,旨在帮助备考者全面理解和掌握架构设计的核心概念...
考试分为三个科目:信息系统综合知识(选择题)、系统架构设计案例分析(问答题)和系统架构设计论文(论文题),总时长为360分钟,全面考察考生的理论知识、实际操作能力和独立思考能力。 考生在备考过程中,不仅...