1 распределен
1.1 Что распределено
1.2 Разница между распределенными и кластерами
Оказывается, в маленьком ресторане есть только один шеф-повар, который разрезает овощи, моет овощи, готовит ингредиенты и ворчивает их все. Позже, было больше клиентов, и шеф -повар на кухне был слишком занят, поэтому он нанял другого шеф -повара. Оба шеф -повара могли готовить одни и те же блюда. Отношения между этими двумя поварами были кластером. Чтобы позволить шеф -повару сконцентрироваться на приготовлении пищи и сделать лучшее из блюд, он нанял гарнир, чтобы ответить на обрезку овощей, приготовление посуды и приготовление ингредиентов. Отношения между шеф -поваром и гарниром распределены, и одно гарнир слишком занята, поэтому он нанял гарнир, а связь между двумя боковыми блюдами - кластер.
2. Создайте распределенный проект
Инструменты подготовки: Eclipse, VMWARM, оснащенный системой CentOS7, Zookeeper .... Самое важное-трехлетняя пожилая машина.
1 Сначала создайте проект Maven родительского класса, а метод упаковки - POM.
Создайте родительский класс Maven Project в Eclipse, а метод упаковки - POM. Зачем создавать родительский класс Maven Project? Поскольку вы хотите использовать этот проект Maven для управления различными версиями пакетов JAR, если подкласс хочет, чтобы пакет JAR напрямую и родительский класс вы можете сделать. xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <groupid> com.itqf </groupid> <artifactid> sing-parent </artifactid> <sersive> 0.0.1-snapshot </версия> <cadeaging> pom </artifactid> <версия> 0.0.1-snapshot </версия> <cadeaging> pom </artifactid> <версия> 0.0.1-snapshot </версия> <пакета> pom </artifactid>. Пакеты-> <properties> <junit.version> 4.12 </junit.version> <Spring.version> 4.2.4.reseRease </spring.version> <mybatis.version> 3.2.8 </mybatis.version> <mybatis.spring.version> 1.2.2 < /mybatis.spring.version><mybatis.paginator.version>1.2.15</mybatis.paginator.version><mysql.version>5.1.32</mysql.version><slf4j.version>1.6.4</slf4j.ve rsion> <jackson.version> 2.4.2 </jackson.version> <druid.version> 1.0.9 </druid.version> <httpclient.version> 4.3.5 </httpclient.version> <jstl.version> 1.2 </jstl .version> <servlet-api.version> 2.5 </servlet-api.version> <jsp-api.version> 2.0 </jsp-api.version> <joda-time.version> 2,5 </joda-time.version> <commons-lang3.ve rsion> 3.3.2 </commons-lang3.version> <commons-io.version> 1.3.2 </commons-io.version> <commons-net.version> 3.3 </commons-net.version> <pagehelper.version> 3.4. 2-fix </pagehelper.version> <jsqlparser.version> 0.9.1 </jsqlparser.version> <commons-fileupload.version> 1.3.1 </commons-fileupload.version> <jedis.version> 2.7 .21 n> 0.1 </zkclient.version> <ActiveMq.version> 5.11.2 </Activemq.version> <freemarker.version> 2.3.23 </freemarker.version> <Quartz.version> 2.2.2 </quartz.version> </Свойства> <!-Управление JAR-пактами, используемыми во всех проектах, без реальных зависимостей-> <Devendency Management> <зависимости> <!-Компонент операции по времени-> <Degestency> <groupid> joda-time </GroupId>
2 Создайте проект агрегации Maven.
2.1 Создайте проект агрегации Maven и наследуйте родительский проект.
Агрегационная инженерия: уровень контроллера, просмотр слоя и т. Д. В проекте может быть независимо сформирована в проект и, наконец, интегрирован в проект, когда он наконец запускается.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <parent> <groupid> com.itqf </GroupId> <artifactid> </artifactid> <serse> 0.0.1-snapshot </версия> <parent> </artifactid> <serse> 0.0.1-snapshot </resment> </artifactid> <version> 0.0.1.11. <artifactId>sing-manager</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <dependencies> <dependency> <groupId>com.itqf</groupId> <artifactId>sing-common</artifactId> <version>0.0.1-SNAPSHOT</version> </dependencies> <buld> <blicins> <bricin> <groupid> org.apache.tomcat.maven </GroupId> <straCactId> tomcat7-maven-plugin </artifactid> <binturation> <port> 8083 </port> <path>/</path> </configuration> </plugin> </plugins> </build> <модалы> <Модули> Sing-Manager-pojo </module> <dodule> Sing-manager-interface </module> <dulule> Sing-Manager-service </module> <dodule> Sing-Manager-mapper </module> </modules> </project>
2.2 Создайте модуль Maven в проекте агрегации и назвайте его Sping-Manager-Pojo (слой класса объекта).
Pojo - это нормальный формат JAR, и он не должен полагаться на родительский проект.
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <parent> <groupid> com.itqf </GroupId> <artifactid> sing-manager </artifactid> <sersion> 0.0.1-snapshot </ression> <pary> <parient> <pary> <parient> <parient> <parient> <ment> <parient> <pary> <artifactid> Sing-Manager-pojo </artifactid> </project>
2.3 Создайте модуль Maven в проекте агрегации и назовите Spring-Manager-Mapper (DAO Layer). Полагайтесь на pojo в файле pom.xml. Поскольку метод слоя Mapper возвращает объект класса объекта, необходимо использовать POJO.
Импорт пакеты JAR -зависимости.
xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <parent> <groupid> com.itqf </GroupId> <artifactid> sing-manager </artifactid> <sersion> 0.0.1-snapshot </ression> <pary> <parient> <pary> <parient> <parient> <parient> <ment> <parient> <pary> <Artifactid> Sing-Manager-Mapper </artifactid> <!-зависимость pojo-> <dependencies> <dependency> <groupid> com.itqf </groupid> <artifactid> sing-manager-pojo </artifactid> <serview> 0.0.1-snapshot </version> </rehyse> <! -> <Dependency> <groupId> org.mybatis </GroupId> <artifactid> mybatis </artifactid> <sersive> $ {mybatis.version} </version> </depertive> <зависимость> < GroupId> org.mybatis </GroupId> <ratifactid> mybatis-spring </artifactid> <sersion> $ {mybatis.spring.version} </version> </gethyse> <зависимость> <gro upid> com.github.miemiedev </groupid> <artifactid> mybatis-paginator </artifactid> <sersion> $ {mybatis.paginator.version} </version> </depertive> <de Pendency> <groupid> com.github.pageHelper </GroupId> <ArtifactId> pageHelper </artifactid> <sersion> $ {pageHelper.version} </version> </vehyse> <!- MySQL-> <Dependency> <groupid> mysql </GroupId> <artifactid> mysql-connector-java </artifactid> <sersive> $ {mysql.version} </version> </depertive> <!-соединение Pool-> <Dependency> <groupId> com.alibaba </GroupId> <artifactId> Druid </artifactid> <sersion> $ {druid.version} </version> </dependency> </depertive> </project> 2.4 Создайте интерфейс Spring-Manager (интерфейс) в проекте агрегации и поместите все сервисные интерфейсы в независимый проект. Если возвращаемое значение метода в интерфейсе является классом сущностей, требуется POJO. Следовательно, это зависит от POJO xml в POM.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <parent> <groupid> com.itqf </GroupId> <artifactid> sing-manager </artifactid> <sersion> 0.0.1-snapshot </ression> <pary> <parient> <pary> <parient> <parient> <parient> <ment> <parient> <pary> <artifactid> Sing-Manager-Interface </artifactid> <deperiation> <deyedency> <groupid> com.itqf </GroupId> <ArtifactId> Sing- Manager-pojo </artifactid> <sersive> 0.0.1-snapshot </version> </jepertive> </depertive> </project> project> </project> </project> </project>
2.5 Создать Spring-Manager-Service (класс реализации интерфейса) в проекте агрегации. Метод упаковки - война
Поскольку уровень контроллера отделен от уровня службы, при запуске и запуске контроллер и служба должны публиковать отдельно с использованием Tomcat, а все файлы конфигурации, необходимые в проекте агрегации, помещаются в службу, так что все файлы конфигурации будут загружены и интегрированы при запуске Tomcat.
Файл конфигурации
SqlMapConfig.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype configurationPublic "-// mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <figuarde>
db.properties
db.driver = com.mysql.jdbc.driverdb.url = jdbc: mysql: // localhost: 3306/taotao? Характерподинг = utf-8db.username = rootdb.password = root
applicationContext-tx.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/s Chema/Context "xmlns: mvc =" http://www.springframework.org/schema/mvc "xmlns: tx =" http: //www.springfr amework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:dubbo="http://c ode.alibabatech.com/schema/dubbo"xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-2........... http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd "> <bean id =" txmanager "> <property name =" DataSource "Ref =" DataSource> </xpertive> </xpect> </xpect> </xpecty> </xpert> </txmanager ' id = "usdiD" transaction-manager = "txmanager"> <tx: атрибуты> <tx: method name = "add*" opragation = "требуется"/> <tx: имя метода = "Сохранить*" Propagation = "Требуется"/> <tx: имя метода = "Insert*" Propagation = "обязательно"/> <tx: method name = "insert*vesegation ="/"/"/"/"/"/>"/"/"/"/>"/"/"/> "/"/> "/>"/"/"/"/"/"/> <tx: method name =" insert*xpagation = "/"/"/> <tx: method mealm =" insert*"/"? name = "update*" opragation = "требуется"/> <tx: method name = "del*" propagation = "требуется"/> <tx: method name = "find*" Propagation = "Поддерживает" read-only = "true"/> <tx: method name = "get*" Propagation = "Поддержка" read-only = "/> </tx: атрибуты: atx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> </tx> <AOP: Advisor Advice-ref = "usdiD" pointcut = "execution (*com.itqf.service ..*.*(..))"/> </aop: config> </beans>
applicationContext-dao.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http :/www.springfr amework.org/schema/mvc"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.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-2........... http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd "> <context: property-laceholder location =" classpath: resource/*. Свойства "/> <bean id =" dataSource "> name =" DriverClassName "value =" $ (db.driver '> </"> </" "> </" "> </" "> </" "> </". value = "$ {db.url}"> </property> <name = "username" value = "$ {db.username}"> </свойство> <name = "password" value = "$ {db.password}"> </property> <name = "maxactive" value = "10"> </properation> <property за <Bean> <name = name = "dataSource" ref = "dataSource"> </property> <name = "configlocation" value = "classpath: mybatis/sqlmapconfig.xml"> </properate> </bean> <bean> <proport name = "basepackage" value = com.itq.mapper "> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean> </bean applicationContext-service.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http :/www.springfr amework.org/schema/mvc"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.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-2........... http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.2.xsd "> <Контекст: компонент-сканирование base-cackage =" com.itqf.service "> </context: component-scan> </beans>
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.qianfeng</groupId> <artifactId>sing-manager</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <ArtifactId> Sing-Manager-Service </artifactId> <CACKADGE> WAR </упаковка> <Dependencies> <dependency> <groupid> com.qianfeng </groupd> <artifactid> sing-manager-interface </artifactid> <persion> 0.0.1-snapshot </version> </repertaind> <bridey> <group> wargein <Artifactid> Sing-Manager-Mapper </artifactid> <sersive> 0.0.1-snapshot </version> </depertive> <!-Spring Spring -> <Dependency> <groupId> org.springframework </GroupId> <ArtifactId> Spring-Context </artifactId> <sersion> $ {Spring.version} </version> </depertive> <depertive> <groupd> org.springframework </GroupD> <strifactid> spring-beans </artifactid> at Ring.version} </version> </dependency> <Dependency> <groupId> org.springframework </groupid> <artifactid> spring-webmvc </artifactid> <sersion> $ {Spring.version} </version> </resemending> <dependency> <groupid> org.sprameframework </artifact> <peyedy> <groupid> org.spramework </artifact> jdbc </artifactid> <sersion> $ {spring.version} </version> </resemency> <depervice> <groupid> org.springframework </GroupId> <artifactId> пружина </artifactId> <sersion> $ {spring.version} </ression> </зависимость> <зависимость> <group> org.spring rk </groupid> <artifactid> spring-jms </artifactid> <sersion> $ {spring.version} </version> </degy Devility> <deyedency> <groupid> org.springframework </GroupId> <artifactid> </resectory </artifactid> </version> $ {spring.version>Окончательная инженерная структура
3 Используйте Dubbo для публикации сервиса
Подумайте первым?
Сайты торговых центров, такие как Taobao и JD, могут не только войти со стороны ПК, но и со стороны мобильного телефона. Как это реализовано? Написать два контроллера? Это определенно нет. Кому будет нечего делать, когда вам нечего делать? Тогда это требует использования SOA (сервисная архитектура). Когда мы пишем проект с использованием распределенного, будет много систем, чтобы вызвать друг друга. Если вы звоните туда и обратно, структура кода будет очень запутанной. Здесь мы используем Dubbo, чтобы решить проблему слишком большого количества издательских услуг и не четко об этом.
Что такое SOA
SOA - это метод проектирования, который включает в себя несколько сервисов, а услуги в конечном итоге предоставят серию функций посредством сотрудничества. Служба обычно существует в независимой форме в процессе операционной системы. Услуги общаются через сеть, а не в процесс обработки.
Например, сейчас у вас есть много услуг: новостные услуги (предоставление пресс-релизов, просмотр, модификация, удаление), услуги заказа (добавление заказа, модификация заказа, просмотр заказов, удаление заказа и т. Д.) Финансовые услуги (доход, расходы, статистика и т. Д.) Услуги сотрудников (новая, модификация, просмотр, статистические услуги).
Дуббо
Что такое Dubbo (инструмент управления для расписания ресурсов и центра управления)
С разработкой Интернета масштаб приложений веб -сайтов был непрерывно расширен, а обычные архитектуры вертикальных приложений больше не могут с ним справляться. Распределенные сервисные архитектуры и архитектуры мобильных вычислений являются обязательными. Система управления срочно необходима для обеспечения упорядоченной эволюции архитектуры.
Архитектура единого приложения
Архитектура вертикального применения
Распределенная архитектура обслуживания
Архитектура проточных вычислений
Строительство Dubbo Environment:
Описание роли узла:
Описание отношений вызовов:
Здесь мы в основном приходим в реестр (реестр) и используем Zookeeper для выступления в качестве реестра.
Развернуть реестр в среде Linux, Zookeeper
Первый шаг, конечно, - включить виртуальную машину, поэтому я сделаю это в CentOS7.
Получить сжатый пакет Zookeeper онлайн, шахта Zookeeper-3.4.6.tar.gz
Вставьте в каталог /opt и декомпресс. (Среда JDK требуется. Если нет среды JDK, сначала установите JDK)
Введите каталог Zookeeper-3.4.6 и создайте папку с названием Data.
Rename Zoo_sample.cfg в каталоге ./conf в Zoo.cfg Измените атрибут данных в Zoo.cfg: datadir =/opt/Zookeeper-3.4.6/Data
Шаг 7:
Обратите внимание, что после начала Zookeeper вы должны выключить брандмауэр !!! Вот и все.
Добавить файл конфигурации в Service ApplicationContext-service.xml, чтобы опубликовать службу
<!-Используйте Dubbo, чтобы опубликовать Сервис-> <!-Укажите проект, в котором находится сервис-> <dubbo: name = "Sing-Manager"/> <!-Укажите, что адрес реестра-IP-адрес в Linux Plus номер порта, а номер порта по умолчанию Zookeeper-2181-> <Dubbo: Registry Protocol = " address = "10.0.117.198:2181"> </dubbo: реестр> <!-Поместите обслуживание на определенный номер порта порта порта, выберите порт, который не занят-> <dubbo: название протокола = "Dubbo" порт = "20888"> </dubbo: Протокол> <!-Ознакомьтесь с сервисом для определенного порта порта, выберите «Порт», это не является определенным портором, который не является определенным портором, не является определенным портором, не является определенным портором <dubbo: имя протокола = "dubbo" port = "20888"> </dubbo: protocol> <!-ref-это имя сервисного объекта, созданного контейнером Spring-> <dubbo: Service Interface = "com.itqf.service.itemservice" ref = "itemserviceimpl" timeout = "6000000"> </dubbo: service "ref =" itemserviceimpl "=" 6000000 "
Импортные пакеты в обслуживании pom.xml
<!-связанный с Dubbo-> <Depective> <groupid> com.alibaba </GroupId> <ArtifactId> dubbo </artifactid> <!-Исключить зависимости -> <slocsions> <scloysusion> <groupid> org.springframework </GroupId> <strifactId> Spring </artifactid> </exclusion> <sclosusion> <groupid> org.jboss.netty </groupid> <artifactid> netty </artifactid> </encusion> </исключения >/Зависимость> <Dependency> <groupId> org.apache.zookeeper </GroupId> <strifactid> Zookeeper </artifactid> </depervice> <dehydency> <groupid> com.github.sgroschupf </GroupD> <strifactid> zkclient </artifactId> </зависимость>
4 Создайте управляющий пружинным менеджером, который находится на том же уровне, что и совокупный проект. Импорт зависимости.
Конселс должен использовать Dubbo для доступа к сервису, опубликованному уровнем сервиса. Чтобы использовать сервер Tomcat для публикации, конечно, SpringMVC также необходим.
xml
<deperiandess> <!-Просто полагайтесь на интерфейс сервиса-> <Dependency> <groupid> com.qianfeng </GroupId> <artifactid> Sing- Manager-Interface </artifactid> <sersive> 0.0.1-snapshot </version> </dependency> <!-Spring> -> <Dependency> <groupId> org.springframework </GroupId> <ArtifactId> Spring-Context </artifactId> <sersion> $ {Spring.version} </version> </depertive> <depertive> <groupd> org.springframework </GroupD> <strifactid> spring-beans </artifactid> at Ring.version} </version> </dependency> <Dependency> <groupId> org.springframework </groupid> <artifactid> spring-webmvc </artifactid> <sersion> $ {Spring.version} </version> </resemending> <dependency> <groupid> org.sprameframework </artifact> <peyedy> <groupid> org.spramework </artifact> jdbc </artifactid> <sersion> $ {spring.version} </version> </resemency> <depervice> <groupid> org.springframework </GroupId> <artifactId> пружина </artifactId> <sersion> $ {spring.version} </ression> </зависимость> <зависимость> <group> org.spring rk </groupid> <artifactid> spring-jms </artifactid> <sersion> $ {Spring.version} </version> </depertive> <Dependency> <groupid> org.springframework </GroupId> <ratifactid> spring-context-support </artifactid> <sersion> $ {Spring.version} </resement> </ression> <//resement> <//resemnency> <//resectond> </ressure> </artifactid> <sersion> <serse> </artifactid> <sersiod> <serse. Связанный с JSP-> <Dependency> <groupId> jstl </GroupId> <ratifactid> jstl </artifactid> </deperizence> <deyedency> <groupid> javax.servlet </Groupid> <ratifactid> Сервлет-API </a rtifactid> <scope> предоставлен </scope> </depervice> <dehyedency> <groupid> javax.servlet </GroupId> <artifactid> jsp-api </artifactid> <cracpe> Dubbo связан-> <Dependency> <groupid> com.alibaba </GroupId> <ArtifactId> dubbo </artifactid> <!-Исключить зависимости -> <slocsions> <scloysusion> <groupid> org.springframework </GroupId> <strifactId> Spring </artifactid> </exclusion> <sclosusion> <groupid> org.jboss.netty </groupid> <artifactid> netty </artifactid> </encusion> </исключения >/Зависимость> <Dependency> <groupId> org.apache.zookeeper </groupid> <artifactid> zookeeper </artifactid> </depervice> <dehydency> <groupid> com.github.sgroschupf </GroupId> <strifactid> zkclient </artifactid> </зависимость> <buld> <blicins> <blicin> <groupid> org.apache.tomcat.maven </GroupId> <artifactid> tomcat7-maven-plugin </artifactid> <binturation> <port> 8081 </port> <path>/</path> </configuration> </plugin> </plugins> </build> spingmvc.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/s Chema/Context "xmlns: mvc =" http://www.springframework.org/schema/mvc "xmlns: tx =" http: //www.springfr amework.org/schema/tx"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:dubbo="http://c ode.alibabatech.com/schema/dubbo"xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-2........... http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd "> <xetteply: component-can base-package =" com.itqf.controller "> </context: component-can-canage =" com.itqf.controller " <MVC: направление аннотаций> </mvc: направление аннотаций> <bean> <name = "prefix" value = "/web-inf/jsp/"> </property> <name = "suffix" value = ". jsp"> </property> </bean> <!-Укажите проект-> <dubbo: upplion ulepply = "sping-manage-contriller Центр-> <Dubbo: Registry Protocol = "Zookeeper" Address = "10.0.117.198:2181"> </dubbo: реестр> <!-Вызов службы-> <dubbo: reference interface = "com.itqf.service.itemservice" id = "itemservice"> </dubbo: reference>
Структурная диаграмма:
5 Создайте весеннюю комму
Это место, которое мне нужно использовать для размещения инструментов, которые используются для размещения некоторых общественных потребностей; pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd "> <dolidyversion> 4.0.0 </modelversion> <parent> <groupid> com.itqf </GroupId> <artifactid> </artifactid> <serse> 0.0.1-snapshot </версия> <parent> </artifactid> <serse> 0.0.1-snapshot </resment> </artifactid> <version> 0.0.1.11. <ratfactid> Sing-Common </artifactid> <sersion> 0.0.1-snapshot </version> <depertiencies> <!-Компонент операции по времени-> <Dependency> <groupId> Joda-time </GroupId> <strifactid> Joda-Time </artifactid> <serse> $ {joda-time.version} </версия> </apersice> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </aperse> </appactid> at {joda-time.version. Компоненты-> <Dependency> <groupId> org.apache.commons </GroupId> <artifactid> commons-lang3 </artifactid> <serse> $ {commons-lang3.version} </version> </resemending> <deyedency> <groupid> org.apache.commons </GroupId> </artifact Id> commons-io </artifactid> <sersion> $ {commons-io.version} </version> </dependency> <dependency> <groupid> commons-net </GroupId> <straCactId> Commons-net </artifactid> <serview> $ {commons-net.version} </version> </reperty> <! Toolkit-> <Depected> <groupId> com.fasterxml.jackson.core </GroupId> <artifactId> jackson-databind </artifactid> <sersion> $ {jackson.version} </version> </devestion> </degestiess> </project>6 тест
Хорошо, этот псевдо-распределенный проект был построен. Следующим важным моментом является то, что родительский проект, проект агрегации Spring-Manager и весеннюю Коммон должны быть установлены на местном складе. В противном случае, при запуске проекта будет сообщена ошибка, а родительский проект или другие проекты не могут быть найдены.
Окончательный рисунок:
Суммировать:
После нескольких часов тяжелой работы я наконец построил ее. Старик, который собирался устать и взорваться. Если есть какие -либо ошибки или недостатки, пожалуйста, будьте готовы сделать это.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.