欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    技术系统架构标准规范.doc

    • 资源ID:820294       资源大小:202.50KB        全文页数:15页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    技术系统架构标准规范.doc

    1 引言引言1.1 目的目的通过对系统整体架构和技术规范的描述,为下一步大规模设计开发提供基础和规范。1.2 对象与范围对象与范围项目管理人员,开发人员,测试人员。1.3 概述概述系统一期,以实现功能为主,效率性能为辅,但设计兼顾未来性能的扩展,以减 少未来重构的工作量。 webapp 按逻辑分为两层,第一层用户服务接入,第二层内部服务。第一层一期不 分模块,以二级目录形式表示不同模块,第二层根据不同服务分模块,第一层和第二 层之间使用 hessian 通信。 第一层和第二层独立部署,第二层的不同模块也可以独立部署。 下一期考虑第一层分模块的二级域名独立部署,并实现单点登录。 web app 采用集群负载均衡,数据库采用负载均衡和读写分离,以满足一定的性 能需求。 文档描述了各层结构和模块使用的技术和框架。最后描述了开发的规范和用到的 开发工具。 文档只是描述了一期的架构,2 系统架构图系统架构图一期系统架构如下用户浏览器Web APP(bull)rmi缓存 同步负载均衡,动静分离(nginx)http动态请 求网络存储静态请求i后台管理系统 (hourse)管理员浏览 器httphessian文件存取邮件服务器物流公司A8系统第三方网站短信平台银行,第三方支付HessianHessianWeb APP(bull)WSSmtpapi支付 (lio n)物流 (ant elop e)邮件 (eag le)短信 (pig eon)搜索 (dog )对外 服务 (cam el)进销 存 (fox )调用 外部 (mou se)数据库读写分离,负载均衡(Amoeba)JDBCJDBCDB(master)DB (salver)DB (salver)DB (salver)DB (salver)ODBCREPLICATION3 层次和模块层次和模块3.1 前端负载均衡前端负载均衡nginx 是一个口碑很好的开源免费 WEB 服务器,国内很多大型网站都转选 nginx 平 台,比如腾讯,豆瓣等。Nginx 可以实现动静分离和 web app 的负载均衡。3.1.1 动静分离动静分离动静分离可以很好得分担服务器的负载,有两种方式实现动静分离。 1使用 2 级域名,配置专门的静态文件服务器。 2利用 nginx 的 url 转发功能,把静态请求转发到静态服务器或在 nginx 本地 处理,动态请求转发到应用服务器。 我们目前部署上采用第二种方式,同时也实现第一种方式。系统可以配置动态服 务器地址和静态服务器地址,在生成页面时获取这两个地址,对图片、js 脚本、css 和 静态页面使用静态配置生成 url,对 ajax 请求和动态页面使用动态服务器地址生成 url。3.1.2 负载均衡负载均衡nginx 可以配置 upstream 服务器组,实现组内的负载均衡。通过 ip_hash 的方式把 动态请求转发到组内的某台服务器,同时保证客户端在 IP 不变的情况下一直访问同一 台服务器,解决 session 保持问题。3.2 Web app网站前端,基于 j2ee,spring 框架开发。3.2.1 页面展示和控制页面展示和控制系统有三种页面方式。 1 动态同步请求,通过 velocity 模板生成页面,客户端刷新整个页面。2 ajax 异步请求。Ajax 异步请求又有三种形式:与 velocity 模板结合返回 html 串; 返回 json 格式;直接返回简单的字符串。 3 模板生成的纯静态页面 前台页面采用的框架和第三方技术有:1 jquery-core (事件处理,ajax 请求,页面刷新) 。 2 Jqzoom (图片放大器) 3Jquery-validator(输入验证)3.2.2 权限安全控制权限安全控制使用 apache shiro 框架实现权限控制。Shiro 是一个强大、使用简单的权限安全框架。 同时 Shiro 也能与 cas 单点登录整合,方便在下一期扩展多个应用模块。 框架把权限系统分成 subject(当前用户) ,manager(管理所有用户),realms(权限 数据)三层。支持基于实际资源和基于角色的权限校验,同时 我们扩展 shiro 的 UsernamePasswordToken,Realm 实现基于验证码和数据库用户密码 的用户登录验证。 在过滤器层,我们暂时只使用 shiro 的 3 种类型过滤器控制访问: 1AnonymousFilter 匿名过滤器 任何人可以访问。 2AuthenticatingFilter 认证过滤器 必须通过身份认真才能访问(跳转到登录页 面) 。 可以对当前 subject 直接调用方法完成判断是否登录,登录,注销等操作,方便对 登录功能的扩展。3.2.3 控制器层控制器层采用 spring 基于注解的控制器,控制器支持 velocity 视图返回,ajax json 返回和 ajax text 返回。3.2.4 数据验证数据验证使用和扩展 apache 的 common-validator。3.2.5 逻辑层逻辑层采用 spring 基于注解的事务控制。3.2.6 数据持久层数据持久层采用 ibatis 框架,基于 sqlmap 配置实现数据的读写,sqlmap 配置可以控制底层 sql语句,便于数据库的调优。3.2.7 缓存的处理缓存的处理使用缓存可以降低与数据库的交互次数,极大提高系统性能。我们采用 ehcache 缓存 框架。用到两种缓存方式: 1 页面缓存:直接在过滤器层对页面进行缓存处理,在过滤器层就可以返回缓存的 页面,不用转到控制器去处理。对于页面比较复杂,调用业务逻辑比较多的页面, 采用页面缓存效果很好,比如首页。 2 基于注解的方法缓存,可以对方法的返回值缓存,存入的参数可以组成 key。可以 在逻辑层使用缓存,也可以在持久层试用。对于请求简单,访问量大,但修改频 率比较低的数据进行缓存可以达到很好的效果。比如商品分类,系统数据字典, 地区等数据。 Ehcache 支持分布式缓存,ehcache 支持服务器之间通过 rmi 调用保持所有服务器之间 缓存同步。缓存的两种过期机制: 1 定时过期,直接通过 ehcache 的配置确定缓存过期频率。 2 主动通知,管理员在后台系统进行某些操作后,通过 hessian 远程调用通知应 用服务器缓存过期。只需通知一台应用服务器,应用服务器之间通过 ehcache 自带分布式缓存复制方式同步缓存。 后台管理系统可以提供刷新缓存功能,管理员在后台管理系统主动刷新缓存。3.2.8 去其他模块之间的通信去其他模块之间的通信通过 hessian 远程调用框架,实现与其他模块功能之间的通信。 Hessian 是一个基于 http 的二进制远程过程调用框架,比 webservice 更高效。与 Spring 框架很好结合,开发简单。3.3 后台管理系统后台管理系统管理员用来维护网站的系统。基于 j2ee spring 框架。与网站前台使用到的技术差不 多,现只介绍不同点:3.3.1 页面的展示页面的展示大部分请求采用页面刷新的机制。 头部,中部左侧菜单和底部固定不变。中部右侧 iframe 为主操作区,每次操作刷新页 面。 商品描述的编辑需要使用到富文本编辑器,我们采用开源的 TinyMCE,TinyMCE 在国 内应用比较广泛。3.3.2 缓存机制缓存机制后台系统访问不是很频繁,同事管理员需要的是实时的数据,所以后台管理系统不 对数据进行缓存。3.3.3 权限管理权限管理采用 sping security 框架进行权限的控制,基于用户、角色和资源的授权机制。3.4 支付模块:支付模块:支付模块主要功能是订单的管理,与银行等支付系统的交互。基于 j2ee spring 框架。 采用 spring mvc 模式。3.4.1 与银行和其他支付系统的交互与银行和其他支付系统的交互需要提供一个 Url 地址,供银行在用户完成支付后回调,通知系统已经支付成功。3.4.2 与内部模块之间的通信与内部模块之间的通信主要来自网站前端的调用。基于 hessian 机制。3.5 物流模块物流模块支付模块目前主要功能是调用物流公司的接口跟踪物流状态,随着系统的不断发展, 在拥有自己的物流后,可能发展成一个庞大的系统。基于 j2ee spring 框架。采用 spring mvc 模式。基于 hessian 机制对外提供远程效用服务。3.6 邮件模块邮件模块邮件模块主要用来向客户发送邮件。基于 j2ee spring 框架。采用 spring mvc 模式。3.6.1 邮件发送邮件发送使用 java mail 包发送邮件,支持以固定模板发送邮件。3.6.2 定时发送定时发送使用 spring+quartz 框架实现定时任务发送邮件。3.6.3 与内部模块之间的通信与内部模块之间的通信为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。3.7 短信模块短信模块短信模块主要用来向客户发送短信。基于 j2ee spring 框架。采用 spring mvc 模式。3.7.1 邮件发送邮件发送调用短信设备 api 发送短信,支持以固定模板发送短信。3.7.2 定时发送定时发送使用 spring+quartz 框架实现定时任务发送短信。3.7.3 与内部模块之间的通信与内部模块之间的通信为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。3.8 进销存模块进销存模块调用 A8 系统接口,实现库存的管理。基于 j2ee spring 框架。采用 spring mvc 模式。3.8.1 Web service 调用调用采用 spring+xfile 框架调用 a8 系统 webservice。3.8.2 与内部模块之间的通信与内部模块之间的通信为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。3.9 搜索模块搜索模块为网站提供搜索服务。包括商品检索和问答式搜索的问题检索。基于 j2ee spring 框架。 采用 spring mvc 模式。3.9.1 检索框架检索框架我们使用国产开源 coreSeek 搜索引擎,基于俄国开源项目 Sphinx 研发并独立开发 的搜索引擎。自带中文分词器 mmseg,有大量中文文档。提供 JAVAAPI。索引建立效 率高并且与业务无关。在国内有大量成功案例。3.9.2 与内部模块之间的通信与内部模块之间的通信为网站前端提供远程调用服务。基于 hessian 机制。3.10 第三方服务调用模块第三方服务调用模块调用第三方合作服务商的接口。基于 j2ee spring 框架。采用 spring mvc 模式。3.10.1 Web service 调用调用采用 spring+xfile 框架调用第三方服务 webservice。3.10.2 与内部模块之间的通信与内部模块之间的通信为网站前端和后台管理系统提供远程调用服务。基于 hessian 机制。3.11 对外服务接口对外服务接口对外部系统提供 webservice 接口服务3.11.1 Web service 服务服务采用 spring+xfile 框架对外提供 webservice 服务。3.11.2 与内部模块之间的通信与内部模块之间的通信调用内部其他模块的服务。基于 hessian 机制。3.12 数据库数据库使用 mysql5.5 数据库存储数据,并使用读写分离机制提高数据库性能。3.12.1数据库读写分离数据库读写分离我们使用开源的 mysql 代理 Amoeba 实现数据库的读写分离,把写请求发送到主服务 器,读请求发送到从服务器,主从之间通过 mysql 自带的复制机制实现数据的同步。3.12.2数据库负载均衡数据库负载均衡Amoeba 支持轮询和权重两种负载均衡机制,我们使用权重负载机制实现读服务器的 负载均衡。3.12.3数据库表引擎的选择数据库表引擎的选择主服务器必须使用 innodb 支持事务的存储引擎,行级锁表。而从服务器可以考虑使用 myisam 引擎,不支持事务,表级锁表,具有更高的读写效率,但不支持外键。3.12.4主从数据库的差异优化主从数据库的差异优化主服务器只需要建立唯一索引和外键约束,其它针对对查询优化的索引可以不建立, 这要可以提高主服务器的性能。 从服务器字段使用 char 而不用 varchar,没有 varchar, text, blob 字段的表是静态表,反 之是动态表,静态表的检索效率要比动态表好若干倍。4 工程命名工程命名工程以动物命名,结合了各种动物特征与我们各工程的职责: 公共接口工具 magpie(喜鹊) 网站前台服务 bull(公牛) 物流 cheetah (猎豹) 支付 lion (狮子) 进销存接口 fox(狐狸) 搜索 dog (狗) 邮件 eagle (鹰) 短信 pigeon (鸽子) 后台管理 horse(马) 调用第三方合作接口 mouse(老鼠) 对外服务接口 camel(骆驼)5 工程规范工程规范5.1 工程目录结构工程目录结构src 源码 WebContent WEN-INFlib jar 包 config 配置文件 views 视图模板 layout 布局模板 screen 页面模板 各模块 common 公共的styles 样式文件resources 资源文件scripts js 文件 common 公共 js 各模块,各开源 js 项目5.2 包结构包结构包命名基本原则:小写字母开头,如果有多个单词,除第一个单词之外的单词首字母 大写5.2.1 公共工具接口工程公共工具接口工程公共工具:com.zjdelai.emall.common.util 各层的公共基类:com.zjdelai.emall.common 下的各子包 远程调用公共 dto:com.zjdelai.emall.提供服务的工程名.remoting .dto.业务子模块 远程调用公共接口:com.zjdelai.emall.提供服务的工程名.remoting.interfaces.业务子模 块 第三方开源包的扩展:com.zjdelai.emall.common.第三方开源包名5.2.2 各模块工程各模块工程数据对象:com.zjdelai.emall.工程名.domain.业务子模块 持久层 dao 接口: com.delai.emall.工程名.dao.业务子模块 持久层 dao 接口实现: com.zjdelai.emall.工程名.dao.业务子模块.持久层框架名 (ibatis) 持久层 sqlmap: com.zjdelai.emall.工程名.dbMap.业务子模块.数据库类型(mysql) 业务逻辑接口: com.zjdelai.emall.工程名.service.业务子模块 业务逻辑实现: com.zjdelai.emall.工程名.service.业务子模块.impl Web 控制器 action: com. zjdelai.emall.工程名.web.action.业务子模块 Web 验证器:com. zjdelai.emall.工程名.web.validator.业务子模块 Web 过滤器:com. zjdelai.emall.工程名.web.filter 工具:com.zjdelai.emall.工程名.util 远程调用接口实现:com.zjdelai.emall.工程名. remoting.interfaces.业务子模块.impl5.3 类、接口命名类、接口命名类命名基本原则:首字母大写,多个单词的首字母大写 接口命名基本原则:以大写字母“I“开头,如果有多个单词,每个单词头字母大写 I数据对象:数据库表名.java Dao 接口: I+数据对象名+Dao.java dao 实现:数据对象名+Dao+框架名(Ibatis).java sqlmap:数据对象名.xml 业务逻辑接口:I+数据对象名+Manager.java 业务逻辑实现:数据对象名+ManagerImpl.java Web action: domain 名+Action.java Web validator: domain 名+Validator.java Dto:*Dto.java 远程调用接口: I+数据对象名+Sercice.java 远程调用实现:数据对象名+SerciceImpl.java5.4 变量和方法命名变量和方法命名类变量、局部变量命名规范: 变量名首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母大写, 单词与单词之间不要使用_做连接。 类常量命名规范: 所有字母大写,如果有多个单词组成,单词与单词之间以_隔开。而且该变量 必须是公共、静态、final 类型。 方法命名规范: 方法名首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母大写, 单词与单词之间不要使用_做连接。 方法参数名命名规范: 参数名首字母必须小写,如果该变量名有多个单词组成,后面的单词首字母大写,单词与单词之间不要使用_做连接。5.5 注释注释5.5.1 类、接口的注释类、接口的注释类、接口必须要有注释。描述类、接口的功能,作者,版本,最近修改时间。 类的注释必须写在该类的声明语法之前。在注释中要描述该类的基本作用,作者,日 期,版本。/* XXXX 功能类* * author XXX* version X.X.X 修改时间 作者*/5.5.2 类、接口的变量和常量注释类、接口的变量和常量注释类、接口的变量和常量必须有注释,变量和常量注释必须写在变量和常量定义之 前,简单描述其代表的意义。/* * XXXXXX */5.5.3 类、接口方法注释类、接口方法注释方法必须要有注释,方法注释必须写在方法定义之前。该注释包括:方法其功能 的简单 描述,方法的参数、返回值类型、返回值意义简单的描述,跑出异常描述/* XXXXXX 功能* param a a 参数的意义* param b b 参数的意义 * return 返回类型 返回的意义* throws XXXX 异常* throws XXXX 异常*/5.5.4 逻辑代码注释逻辑代码注释逻辑代码必须注释。每个条件判断和每个循环都需要有注释。 其它关键代码也需要注释/* 当 XXXX 的时候 XXXX*/If ( ) /* 循环 XXXX */for () /* * XXXXXX */程序代码6 开发环境和工具开发环境和工具JDK1.6 Eclipse3.7 Jboss5.1.0 Mysql5.57 部署环境部署环境Red Hat Enterprise Linux Server release 5 JDK1.6Jboss5.1.0 Amoeba for mysql Mysql5.5

    注意事项

    本文(技术系统架构标准规范.doc)为本站会员(一***)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

    © 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

    黑龙江省互联网违法和不良信息举报
    举报电话:0468-3380021 邮箱:hgswwxb@163.com  

    收起
    展开