商城项目笔记 · 1-4天

第一天

分布式架构示例图:

集群:同一个工程部署到多台服务器上。

分布式架构:把系统按照模块拆分成多个子系统。(每个子系统都是一个工程,根据需要运行在不同的tomcat上)

分布式架构优点:

  1. 把模块拆分,使用接口通信,降低模块之间的耦合度。
  2. 把项目拆分成若干个子项目,不同的团队负责不同的子项目。
  3. 增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
  4. 可以灵活的进行分布式部署。

分布式架构缺点:

1、系统之间交互需要使用远程通信,接口开发增加工作量。

2、各个模块有一些通用的业务逻辑无法共用。

  •  

SOA架构:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。

  •  

商城项目架构:

分布式架构和SOA架构区别:分布式架构一个子系统包括前端后端,SOA架构的后端就是所有的服务,前端需要什么服务直接引用即可。

  •  

maven搭建项目工程:

第二天

由于宜立方商城是基于soa的架构,表现层和服务层是不同的工程。所以要实现商品列表查询需要两个系统之间进行通信。

如何实现远程通信?

1、Webservice:效率不高基于soap协议。项目中不推荐使用。

2、使用restful形式的服务:http+json。很多项目中应用。如果服务太多,服务之间调用关系混乱,需要治疗服务。

3、使用dubbo。使用rpc协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数。

  •  

技术的发展:

Dubbo就是资源调度和治理中心的管理工具。

dubbo架构:

  •  

Zookeeper是java开发的可以运行在windows、linux环境。需要先安装jdk。

安装步骤:

第一步:安装jdk

第二步:把zookeeper的压缩包上传到linux系统。

第三步:解压缩压缩包到usr/local

tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local

第四步:进入zookeeper-3.4.6目录,创建data文件夹。

第五步:把conf下的zoo_sample.cfg改名为zoo.cfg

[root@localhost conf]# mv zoo_sample.cfg zoo.cfg

第六步:修改zoo.cfg中的data属性:dataDir=/root/zookeeper-3.4.6/data(就是data文件夹的路径,在data文件夹下执行pwd即可获得)

第七步:启动zookeeper

[root@localhost bin]# ./zkServer.sh start

关闭:[root@localhost bin]# ./zkServer.sh stop

查看状态:[root@localhost bin]# ./zkServer.sh status

注意:需要关闭防火墙

  •  

将商城工程改造为soa架构

拆分工程:

1)将表现层工程独立出来:e3-manager-web

2)将原来的e3-manager改为如下结构

e3-manager(pom)

   |--e3-manager-dao(jar)

   |--e3-manager-interface(jar)

   |--e3-manager-pojo(jar)

   |--e3-manager-service(war)

服务层工程:

第一步:把e3-manager的pom文件中删除e3-manager-web模块。

第二步:在eclipse工作空间文件夹内,把e3-manager-web文件夹移动到e3-manager同一级目录。

第三步:e3-manager-service的pom文件修改打包方式成如下

<packaging>war</packaging>

第四步:在e3-manager-service工程中src/main下添加webapp/WEB-INF/web.xml文件

第五步:把e3-manager-web的配置文件复制到e3-manager-service中。

删除springmvc.xml

第六步:manager-service的web.xml 中只配置spring容器。删除前端控制器

第七步:发布服务

1).在e3-manager-Service工程中添加dubbo依赖的jar包

2).在spring的配置文件中添加dubbo的约束,然后使用dubbo:service发布服务。

表现层工程:

用maven方式导入e3-manager-web工程进行改造

第一步:删除mybatis、和spring的配置文件。只保留springmvc.xml

第二步:修改e3-manager-web的pom文件,

  1. 修改parent为e3-parent
  2. 添加spring和springmvc的jar包的依赖
  3. 删除e3-mangager-service的依赖
  4. 添加dubbo的依赖
  5. e3-mangager-web添加对e3-manager-Interface的依赖。

第三步:修改springmvc.xml,在springmvc的配置文件中添加dubbo服务的引用。

第四步:在e3-manager-web工程中添加tomcat插件配置。

  •  

dubbo监控中心

需要在linux服务器上安装tomcat,然后部署监控中心即可。

1、部署监控中心:

把dubbo的war包部署到Linux上

[root@localhost ~]# cp dubbo-admin-2.5.4.war apache-tomcat-7.0.47/webapps/dubbo-admin.war

  1. 启动tomcat
  2. 访问http://192.168.25.167:8080/dubbo-admin/

用户名:root 密码:root

如果监控中心和注册中心在同一台服务器上,可以不需要任何配置。

如果不在同一台服务器,需要修改配置文件:

/root/apache-tomcat-7.0.47/webapps/dubbo-admin/WEB-INF/dubbo.properties

  •  

分页工具遇到一个bug,一直提示PageInfo类找不到,使用电脑百度尝试了很多方法都无法解决,结果用手机搜了一下,第一个搜索结果就解决了这个问题。解决:把maven仓库的pagehelper文件夹删除,重新maven install工程pagehelper即可

第三天

nginx安装:

  1. 需要安装gcc的环境。yum install gcc-c++
  2. 第三方的开发包。
  • PCRE

        PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要在linux上安装pcre库。

yum install -y pcre pcre-devel

注:pcre-devel是使用pcre开发的一个二次开发库。nginx也需要此库。

  • zlib

        zlib库提供了很多种压缩和解压缩的方式,nginx使用zlib对http包的内容进行gzip,所以需要在linux上安装zlib库。

yum install -y zlib zlib-devel

  • openssl

        OpenSSL 是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。

        nginx不仅支持http协议,还支持https(即在ssl协议上传输http),所以需要在linux安装openssl库。

yum install -y openssl openssl-devel

第一步:把nginx的源码包上传到linux系统

第二步:解压缩(不需要指定目录,下面的命令会指定安装目录)

[root@localhost ~]# tar zxf nginx-1.8.0.tar.gz

第三步:。进入nginx-1.8目录,执行如下命令:

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

第四步:make(编译)

第五步:make install

启动nginx之前,上边将临时文件目录指定为/var/temp/nginx,需要在/var下创建temp及nginx目录。否则启动nginx会报错。在usr/local/nginx/sbin下执行:[root@localhost sbin]# mkdir /var/temp/nginx/client -p

启动:

进入usr/local/nginx/sbin目录[root@localhost sbin]# ./nginx

关闭nginx:[root@localhost sbin]# ./nginx -s stop

推荐使用:[root@localhost sbin]# ./nginx -s quit

重启nginx:

  1. 先关闭后启动。
  2. 刷新配置文件:[root@localhost sbin]# ./nginx -s reload

查看进程,确定nginx启动:

   ps aux|查看所有进程

   ps aux|grep nginx 查看和nginx相关的进程

浏览器输入:部署nginx机器的ip(默认80端口)(有的浏览器会加上https,不要s)

  •  

nginx通过端口区分不同的主机:

使用一个ip+不同端口来访问不同的服务

usr/local/nginx/conf/nginx.conf中添加一个服务:

复制一份html来区分两个端口:

重新加载配置文件:[root@localhost nginx]# sbin/nginx -s reload

本地访问:ip:+端口号81

  •  

nginx通过域名区分主机:

修改windows的host文件来映射域名和ip:

添加服务:

访问:

  •  

  •  

nginx实现反向代理

两个域名指向同一台nginx服务器,用户访问不同的域名显示不同的网页内容。两个域名是www.sian.com.cn和www.sohu.com

第一步:安装两个tomcat,分别运行在8080和8081端口。(更改端口不会)

第二步:启动两个tomcat。

第三步:反向代理服务器的配置

upstream tomcat1 {
	server 192.168.25.148:8080;
    }
    server {
        listen       80;
        server_name  www.sina.com.cn;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat1;
            index  index.html index.htm;
        }
    }
    upstream tomcat2 {
	server 192.168.25.148:8081;
    }
    server {
        listen       80;
        server_name  www.sohu.com;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            proxy_pass   http://tomcat2;
            index  index.html index.htm;
        }
    }

第四步:nginx重新加载配置文件

第五步:配置域名

在hosts文件中添加域名和ip的映射关系

192.168.25.148 www.sina.com.cn

192.168.25.148 www.sohu.com

 在浏览器访问不同域名,找到不同的tomcat,运行不同的服务。从而实现反向代理

  •  

负载均衡

如果同一个服务多个服务器提供,需要把负载分配到不同的服务器处理,需要负载均衡。

 upstream tomcat2 {

        server 192.168.25.148:8081;(服务器1)

        server 192.168.25.148:8082 weight=2;(服务器2)

  }

可以根据服务器的实际情况调整服务器权重。权重越高分配的请求越多,权重越低,请求越少。默认是都是1

  •  

综合:

第四天

FastDFS是用c语言编写的一款开源的分布式文件系统。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

FastDFS架构包括 Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server作用是负载均衡和调度, Storage server作用是文件存储。

由于搭建FastDFS非常复杂,我在manager-web表现层新建了pictures文件夹,图片直接保存到这里。

  •  

富文本编辑器

KindEditor、UEditer。纯js开发,跟后台语言没有关系。

使用方法:(待定,会专门写一篇博客)

第一步:在jsp中引入KindEditor的css和js代码。

第二步:在表单中添加一个textarea控件。是一个富文本编辑器的载体。类似数据源。

第三步:初始化富文本编辑器。使用官方提供的方法初始化。

第四步:取富文本编辑器的内容。

表单提交之前,把富文本编辑器的内容同步到textarea控件中。

  •  

Linux配置虚拟网络命令:setup(进入一个图形化界面配置)

 

 

 

转载于:https://my.oschina.net/u/3943244/blog/2960635

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值