搭建简单的分布式系统

说明:传统项目中我们的Controller、Service、DAO、POJO都写在一个工程中,在分布式的项目中我们将每个模块分开。

项目分前台和后台两个部分:

前台是普通用户看到的网站,比如你看到的淘宝页面就是前台。

后台是公司内部的管理人员使用的,用于管理商品信息,比如淘宝的店主需要编辑商品。

父工程:分布式架构中,通常设计一个父工程,父工程中不写业务代码,只在pom文件中配置jar包的版本信息。所有的工程都继承它,从父工程中获取jar包版本信息。这样在jar包升级的时候,我们只要修改父工程的pom文件,而不需要修改每个子工程。

DAO和Service数据层和服务层都分开写两个模块,通过面向接口的形式编程。其中Service以服务的形式发布出去,Service只提供业务接口,没有界面。表现层是web网站还是app都和它没有关系。同一个数据接口可以被多个表现层复用。

表现层:Controller和View。Controller从Service中获取数据并展示给用户View。View并不一定是html页面,也可以是单纯的json数据,如安卓或Ios的数据接口。Controller提供json数据给app,由app在手机界面上展示给用户。

分布式的好处:

  比如一个项目中有以下几个模块:注册登录、用户信息修改、商品搜索和下单支付。非分布式项目里我们把这四个模块写到一个工程中。如果其中一个模块修改,就要重新部署整个工程。而且在实际运营中发现,搜索模块用的最高,其次是支付。注册和登录用的并不多。比如双十一的时候,用户都是提前注册的老用户,登录后系统记录了用户的登录状态。所以多数的用户都在搜索商品和下单支付。一台服务器的性能有限,假设能承载50个用户,如果有100个用户来,我们就要加一台服务器。这个叫做负载。负载均衡是把同一个工程部署到多台服务器上,由一个入口的应用判断要把请求分配到哪台服务器。但是前面我们已经说过,注册和登录用的并不多,真正需要加负载的是搜索和支付。根据实际情况,可能搜索使用的频率更大于支付。非分布式的项目里,整个工程一起打包部署,代码都写到一个工程中,注册和登录占用了分配给搜索和支付的资源。分布式的项目可以按模块或者功能拆分代码。比如我们把注册登录和信息修改写到一个工程里;商品搜索写到一个工程;支付写一个工程。根据运营的情况给每个模块加负载,注册登录分1台服务器,搜索加10台,支付加5台。而且修改了其中的一个模块,只要重新部署这个模块所在的服务器就可以,不会影响其他模块服务器的运行。

  当然并不是说分布式就一定好,如果工程比较小的话,写成分布式的反而会消耗系统的性能。根据实际情况来设计整个项目的架构。在项目设计的初期,要考虑工程的可扩展性。



下面简单说明创建一个分布式系统的流程:

1.创建父工程

不使用模板,直接创建maven工程,父工程travel-parent的打包方式是pom

父工程里不写代码,只写jar包配置,其它子工程继承travel-parent,从这里引用jar包,方便管理整个分布式架构中的jar包版本。

创建工程后需要发布工程,这样其它的工程就可以继承父工程了。在idea右侧的菜单中双击install

2.创建通用工程

不使用模板,创建通用工程travel-common,这个工程中存放实体类和一些通用的工具类。

此工程要继承travel-parent,打包方式是jar

3.创建后台管理聚合工程

后台管理中,将dao接口、service接口、service实现类写到三个模块中

其中travel-manager是pom聚合工程

其余三个是model模块,每个model都有一个自己的pom.xml

创建的方法是在travel-manager上右键->New->Module

3.1travel-manager

travel-manager的pom.xml,继承travel-parent

3.2travel-manager-dao

travel-manager-dao的打包方式是jar,即创建工程的时候不需要模板

3.3travel-manager-interface

travel-manager-interface的打包方式是jar,即创建工程的时候不需要模板

3.4travel-manager-service

travel-manager-service是web工程,打包方式是war,创建工程时需要选用webapp模板

4.创建后台web工程

原文地址:https://www.cnblogs.com/sueyyyy/p/9260447.html

时间: 2025-01-18 05:34:12

搭建简单的分布式系统的相关文章

《SpringBoot+Dubbo+Zookeeper整合搭建简单的分布式应用》

为什么要使用分布式系统? 容错 减少延迟/提高性能 可用性 负载均衡 总而言之,其实目的只有一个,"用户体验". 什么是分布式系统? 分布式系统是由使用分发中间件连接的自治计算机组成的网络.它们有助于共享不同的资源和功能,为用户提供单一且集成的连贯网络. 搭建一个简单的分布式系统一.在服务器(虚拟机)上安装Zookeeper(我这里使用Docker安装) (一).去docker-cn.com获取镜像加速地址 (二).使用docker pull registry.docker-cn.co

拿nodejs快速搭建简单Oauth认证和restful API server攻略

拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最近一直在鼓捣这个东西,拿出来分享下一下经验吧,其实很简单,一点也不难. 首先需求是这样,给自己的网站要增加API服务,API分为两种,公共的和私有授权的,授权的使用Oauth方法认证身份,API格式均为JOSN和JSONP. 嗯,别的语言我也没怎么学过,首先是找合适的框架进行实现吧.本身网站使用的e

玩转Node.js(四)-搭建简单的聊天室

玩转Node.js(四)-搭建简单的聊天室 Nodejs好久没有跟进了,最近想用它搞一个聊天室,然后便偶遇了socket.io这个东东,说是可以用它来简单的实现实时双向的基于事件的通讯机制.我便看了一些个教程使用它来搭建一个超级简单的聊天室. 初始化项目 在电脑里新建一个文件夹,叫做“chatroom”,然后使用npm进行初始化: $ npm init 然后根据提示以及相关信息一步一步输入,当然也可以一路回车下去,之后会在项目里生成一个package.json文件,里面的信息如下: 1 $ ca

使用java搭建简单的ligerui环境

最近因为工作需要,学习了ligerui框架.但是,因为在公司,我们只是作为最低层的码农,所以环境都已经搭建好了,我们这些码农平时都是直接拿到工程,然后在别人的框架上不断的ctrl + c.ctrl + v,然后修修补补.所以为了摆脱这种困境,决定自己使用简单的servlet搭建一个ligerui,然后测试下ligerui这玩意到底是怎么跑起来的. 1.下载ligerui相关组件.这个很简单,直接去www.ligerui.com即可找到. 2.使用Eclipse创建一个web工程,然后搭建下面这个

搭建简单Samba服务器

本文主要实现搭建简单的Samba服务器,使得Windows能访问Linux下的共享目录,为了简单,已经关闭iptables和selinux. 1.安装samba服务器 #yum list all samba* #yum install samba --skip-broken 2.修改samba配置文件 #cd /etc/samba #cp smb.conf smb.conf.bak #vi smb.conf --在配置文件最后增加 [software] comment = Share Testi

mongoDB介绍、安装、搭建简单的mongoDB服务器(一)

相关网站 1. http://www.mongodb.org/ 官网,可以下载安装程序,和doc,和驱动等. 2. http://www.mongoing.com/ 国内官方网站,博客,问题谈论等 3. http://docs.mongoing.com/manual-zh/  中文文档的翻译. 4. https://github.com/mongodb GitHub源码,程序源码,驱动源码.以及工具.(可以看到所有版本) 5. https://jira.mongodb.org MongoDB B

在windows server 2008下搭建简单的java学习环境

1.JDK安装 直接运行下载的JDK安装文件jdk-8u5-windows-i586.exe,按照提示指引进行安装.其中中途有选择JRE的安装,也一并安装了. 2.JDK与JRE的关系 JDK是Java的开发平台,在编写Java程序时,需要JDK进行编译处理: JRE是Java程序的运行环境,包含了JVM的实现及Java核心类库,编译后的Java程序必须使用JRE执行. 在下载的JDK安装包中集成了JDK与JRE,所以在安装JDK过程中会提示安装JRE. 3.环境配置 计算机->属性->高级系

node.js搭建简单的websocket

1.首先在官网http://www.nodejs.org/下载NODE.JS 2.打开命令行CMD,进入NODEJS\node_modules\的目录,输入npm install socket.io  安装socket.io模块.别急着关掉此CMD窗口,后面有用 3.搭建服务端代码server.js 1 var http = require('http'); 2 var io = require('socket.io'); 3 var cisserver = http.createServer(

ExtJS5 (一) 超简单整合到eclipse中,搭建简单的开发环境

个人一直欣赏大神们的唯美前端页面,而现在个人从事的是MIS系统等相关的开发,故决定学习ExtJS,目前最新版本是5.0,就从5.0开始吧. 作为java开发人员,自然而然的想在eclipse中搞个extjs的简单开发环境,以后再慢慢丰富,开始吧~ 第一步:从官网下载extjs,目前是5.0版本 第二步:用eclipse创建一个动态web工程 第三步:在工程的WebContent目录下创建一个文件夹,叫作ExtJS5. 第四步:解压从官网下载的extjs,解压之后,目录结构如下: 看一下根目录下的