实战项目巴巴运动网要点总结

来源:互联网 发布:网络系统的功能 编辑:程序博客网 时间:2024/04/29 20:03

1.项目架构

       传统项目架构:

优点:层级分离,耦合性降低,便于维护

缺点:代码冗余过大,service,dao


新技术架构:

使用技术:dubbo,maven,zookper



项目脉络:

项目架构:    |——baba-parent(父工程 pom)                            |——babas-common(子工程 jar)                                        |                +-------——babas-pojo(子工程 jar)(需要引入common)-----------------+                |                                                              |        |——babas-dao(子工程 jar)(需要引入pojo)     |——babas-interface(子工程 jar)(需要引入pojo)                |                                                         |                |                                                         |        |——babas-service-cob(子工程 购物车,用户  war)-----------------------+        |——babas-service-cms(子工程 内容管理  war)--------------------------+        |——babas-service-solr(子工程 检索  war) ----------------------------+        |——babas-service-product(子工程 商品  war)--------------------------+                                                                           +        |——babas-portal(子工程 前台项目 war)---------------------------------+        |——babas-console(子工程 后台项目 war)--------------------------------+        |——babas-login(子工程 单点登录 war)----------------------------------+语言描述:    pojo依赖common    dao和interface依赖pojo    四个service依赖dao,interface    三个war依赖interface

配置SpringContext.xml

史上最全的头文件

<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:context="http://www.springframework.org/schema/context"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:task="http://www.springframework.org/schema/task"       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"       xsi:schemaLocation="       http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd       http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd       http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd       http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.0.xsd       http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"></beans>

在service层加入事务

@Transactional

测试:throw new RunTimeException("异常");

结果:如果数据库插入的序号跳过一个,说明保存完回滚了


service层需要spring配置,即applicationContext.xml

service的项目的web.xml中只需要配置读取配置 即可

controller层需要spring-mvc配置,即spring-mvc.xml

controller的项目的web.xm中需要配置读取配置文件以及前端控制器despatcher


Dubbo原理图:




注意:Dubbo传递的参数必须实现序列化。不然会报错

消费者找不到服务端可能是没有配置文件引入

DEMO

服务提供者:

    <!--1.名称:计算机区分,唯一-->    <dubbo:application name="babas-service-product"/>    <!--2.设置注册中心地址,协议:zookeeper-->    <!--单机版-->    <dubbo:registry address="47.93.12.239:2181" protocol="zookeeper"/>    <!--集群版-->    <!--<dubbo:registry address="47.93.12.237:2181,47.93.12.238:2181,47.93.12.239:2181" protocol="zookeeper"/>-->    <!--3.提供服务方的ip、端口 192.168.12.58:20880,协议:http,dubbo,tcp,udp,-->    <dubbo:protocol port="20880" name="dubbo"/>    <!--4.暴露实现类,demoService为实现类的别名-->    <dubbo:service interface="com.flx.core.service.DemoService" ref="demoService"/>

服务消费者:

    <!--1.名称:计算机区分,唯一-->    <dubbo:application name="babas-console"/>    <!--2.设置注册中心地址,协议:zookeeper-->    <!--单机版-->    <dubbo:registry address="47.93.12.239:2181" protocol="zookeeper"/>    <!--集群版-->    <!--<dubbo:registry address="47.93.12.237:2181,47.93.12.238:2181,47.93.12.239:2181" protocol="zookeeper"/>-->    <!--3.调用此接口对应的实现类,id对应要注入的名字-->    <dubbo:reference interface="com.flx.core.service.DemoService" id="demoService"/>

Dubbo的优化


1.设置链接超时时间(全局)

<dubbo:consumer timeout = 600000/>

2.直接链接

服务提供方:

    <!--1.名称:计算机区分,唯一-->    <dubbo:application name="babas-service-product"/>    <!--2.设置注册中心地址,协议:zookeeper-->    <!--单机版-->    <!--<dubbo:registry address="47.93.12.239:2181" protocol="zookeeper"/>-->    <!--表示只提供服务不注册,目前开发阶段直连-->    <dubbo:registry address="N/A"/>    <!--集群版-->    <!--<dubbo:registry address="47.93.12.237:2181,47.93.12.238:2181,47.93.12.239:2181" protocol="zookeeper"/>-->    <!--3.提供服务方的ip、端口 192.168.12.58:20880,协议:http,dubbo,tcp,udp,-->    <dubbo:protocol port="20880" name="dubbo"/>    <!--4.暴露实现类,demoService为实现类的别名-->    <dubbo:service interface="com.flx.core.service.DemoService" ref="demoService"/>

服务消费方:

    <!--1.名称:计算机区分,唯一-->    <dubbo:application name="babas-console"/>    <!--2.设置注册中心地址,协议:zookeeper-->    <!--单机版-->    <!--<dubbo:registry address="47.93.12.239:2181" protocol="zookeeper"/>-->    <!--表示直连服务不注册,目前开发阶段直连-->    <dubbo:registry address="N/A"/>    <!--集群版-->    <!--<dubbo:registry address="47.93.12.237:2181,47.93.12.238:2181,47.93.12.239:2181" protocol="zookeeper"/>-->    <!--3.调用此接口对应的实现类,id对应要注入的名字-->    <dubbo:reference interface="com.flx.core.service.DemoService"                     id="demoService" url="dubbo://127.0.0.1:20880"/>    <!--全局设置超时时间,超时时间单位毫秒,10分钟-->    <dubbo:consumer timeout="600000"/>


3.设置不检查

由于dubbo在启动的时候必须检查注册中心以及服务提供方是否存在,不存在则抛出异常
不检查的对象:服务消费方,因为只有服务消费启动的时候才会去检查注册中心以及服务提供方是否存在

    <!--1.名称:计算机区分,唯一-->    <dubbo:application name="babas-console"/>    <!--2.设置注册中心地址,协议:zookeeper-->    <!--单机版-->    <!--<dubbo:registry address="47.93.12.239:2181" protocol="zookeeper"/>-->    <!--表示直连服务不注册,目前开发阶段直连-->    <dubbo:registry address="N/A" check="false"/>    <!--集群版-->    <!--<dubbo:registry address="47.93.12.237:2181,47.93.12.238:2181,47.93.12.239:2181" protocol="zookeeper"/>-->    <!--3.调用此接口对应的实现类,id对应要注入的名字-->    <dubbo:reference interface="com.flx.core.service.DemoService"                     id="demoService" url="dubbo://127.0.0.1:20880"/>    <!--全局设置超时时间,超时时间单位毫秒,10分钟-->    <dubbo:consumer timeout="600000" check="false"/>

原创粉丝点击