±à¼ÍƼö: |
±¾ÎÄÖ÷ÒªÊǽéÉÜ Springboot Óë Dubbo µÄ¿ò¼ÜÕûºÏÒÔ¼°¿ª·¢Êµ¼ù£¬ÎÒÃÇÒÔÒ»¸öÓû§Ñ¡ÔñÉÌÆ·Ï¶©µ¥Õâ¸öÁ÷³Ì£¬½«Æä²ð·Ö³É3¸öÒµÎñ·þÎñ¡£
±¾ÎÄÀ´×ÔÓÚ΢ÐÅ Java¼«¿Í¼¼Êõ£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
Ëæ×Å»¥ÁªÍøµÄ·¢Õ¹£¬ÍøÕ¾Ó¦ÓõĹæÄ£²»¶ÏÀ©´ó£¬³£¹æµÄ´¹Ö±Ó¦Óüܹ¹ÒÑÎÞ·¨Ó¦¶Ô£¬·Ö²¼Ê½·þÎñ¼Ü¹¹ÒÔ¼°Á÷¶¯¼ÆËã¼Ü¹¹ÊÆÔÚ±ØÐУ¬Ø½ÐèÒ»¸öÖÎÀíϵͳȷ±£¼Ü¹¹ÓÐÌõ²»ÎɵÄÑݽø¡£
Ò»¡¢ÏÈÀ´Ò»ÕÅͼ
˵Æð Dubbo£¬ÏàÐÅ´ó¼Ò¶¼²»»áİÉú£¡°¢Àï°Í°Í¹«Ë¾¿ªÔ´µÄÒ»¸ö¸ßÐÔÄÜÓÅÐãµÄ·þÎñ¿ò¼Ü£¬¿ÉÒÔʹµÃÓ¦ÓÿÉͨ¹ý¸ßÐÔÄܵÄ
RPC ʵÏÖ·þÎñµÄÊä³öºÍÊäÈ빦ÄÜ£¬Í¬Ê±¿ÉÒÔºÍ Spring ¿ò¼ÜÎ޷켯³É¡£

Dubbo ¼Ü¹¹Í¼
½Úµã½Çɫ˵Ã÷£º
Provider£º±©Â¶·þÎñµÄ·þÎñÌṩ·½
Consumer£ºµ÷ÓÃÔ¶³Ì·þÎñµÄ·þÎñÏû·Ñ·½
Registry£º·þÎñ×¢²áÓë·¢ÏÖµÄ×¢²áÖÐÐÄ
Monitor£ºÍ³¼Æ·þÎñµÄµ÷ÓôÎÊýºÍµ÷ÓÃʱ¼äµÄ¼à¿ØÖÐÐÄ
Container£º·þÎñÔËÐÐÈÝÆ÷
¶þ¡¢ÊµÏÖ˼·
½ñÌ죬ÎÒÃÇÒÔÒ»¸öÓû§Ñ¡ÔñÉÌÆ·Ï¶©µ¥Õâ¸öÁ÷³Ì£¬½«Æä²ð·Ö³É3¸öÒµÎñ·þÎñ£ºÓû§ÖÐÐÄ¡¢ÉÌÆ·ÖÐÐÄ¡¢¶©µ¥ÖÐÐÄ£¬Ê¹ÓÃ
Springboot + Dubbo À´ÊµÏÖÒ»¸öС Demo£¡
·þÎñ½»»¥Á÷³ÌÈçÏ£º

±¾ÎÄÖ÷ÒªÊǽéÉÜ Springboot Óë Dubbo µÄ¿ò¼ÜÕûºÏÒÔ¼°¿ª·¢Êµ¼ù£¬¶øÕæÊµµÄÒµÎñ·þÎñ²ð·ÖÊÇÒ»¸ö·Ç³£¸´ÔӵĹý³Ì£¬±ÈÎÒÃǽéÉܵÄÕâ¸öÒª¸´ÔӵĶ࣬ÉÏÎÄÌáµ½µÄÈý¸ö·þÎñÖ»ÊÇΪÁËÏîÄ¿ÑÝʾ£¬²»±Ø¹ýÓÚ¾À½áΪʲôҪÕâÑù²ð·Ö£¡
ºÃÁË£¬·Ï»°Ò²²»¶à˵ÁË£¬ÏÂÃæÎÒÃÇ¿ªß££¡
1.ÔÚÐéÄâ»ú´´½¨ 4 ̨ centos7£¬ÈÎÒâÑ¡Ôñһ̨°²×° zookeeper
2.¹¹½¨Î¢·þÎñÏîÄ¿²¢±àд´úÂë
3.ÔÚ centos7 Éϲ¿Êð΢·þÎñ
4.Ô¶³Ì·þÎñµ÷ÓòâÊÔ
Èý¡¢zookeeper°²×°
ÔÚʹÓà Dubbo ֮ǰ£¬ÎÒÃÇÐèÒªÒ»¸ö×¢²áÖÐÐÄ£¬Ä¿Ç° Dubbo ¿ÉÒÔÑ¡ÔñµÄ×¢²áÖÐÐÄÓÐ zookeeper¡¢Nacos
µÈ£¬Ò»°ã½¨ÒéʹÓà zookeeper£¡
Ê×ÏÈÔÚ°²×° Zookeeper ֮ǰ£¬ÐèÒª°²×°²¢ÅäÖúà JDK£¬±¾»ú²ÉÓõÄÊÇOracle Java8
SE¡£
°²×°JDK£¨ÒѾ°²×°¿ÉÒÔºöÂÔ£©
yum -y install
java-1.8.0-openjdk |
²é¿´java°²×°Çé¿ö

JDK°²×°Íê³ÉÖ®ºó£¬ÏÂÔØ°²×°Zookeeper
#´´½¨Ò»¸özookeeperÎļþ¼Ð
cd /usr
mkdir zookeeper
#ÏÂÔØzookeeper-3.4.14°æ±¾
wget http://mirrors.hust.edu.cn/ apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz #½âѹ
tar -zxvf zookeeper-3.4.14.tar.gz |
´´½¨Êý¾Ý¡¢ÈÕ־Ŀ¼
#´´½¨Êý¾ÝºÍÈÕÖ¾´æ·ÅĿ¼
cd /usr/zookeeper/
mkdir data
mkdir log
#°ÑconfϵÄzoo_sample.cfg±¸·ÝÒ»·Ý£¬È»ºóÖØÃüÃûΪzoo.cfg
cd conf/
cp zoo_sample.cfg zoo.cfg |
ÅäÖÃzookeeper
#±à¼zoo.cfgÎļþ
vim zoo.cfg
|

Æô¶¯Zookeeper
#½øÈëZookeeperµÄbinĿ¼
cd zookeeper/zookeeper-3.4.14/bin
#Æô¶¯Zookeeper
./zkServer.sh start #²éѯZookeeper״̬
./zkServer.sh status #¹Ø±ÕZookeeper״̬
./zkServer.sh stop |
³öÏÖÈçÏÂÐÅÏ¢£¬±íʾÆô¶¯³É¹¦£¡

ËÄ¡¢ÏîÄ¿½éÉÜ
springboot°æ±¾£º2.1.1.RELEASE
zookeeper°æ±¾£º3.4.14
dubbo°æ±¾£º2.7.3
mybtais-plus°æ±¾£º3.0.6
Êý¾Ý¿â£ºmysql-8
¹¹½¨¹¤¾ß£ºmaven
·þÎñÄ£¿é£ºÓû§ÖÐÐÄ¡¢ÉÌÆ·ÖÐÐÄ¡¢¶©µ¥ÖÐÐÄ
Îå¡¢´úÂëʵ¼ù
5.1¡¢³õʼ»¯Êý¾Ý¿â
Ê×ÏÈÔÚ mysql ¿Í»§¶Ë£¬´´½¨3¸öÊý¾Ý¿â£¬·Ö±ðÊÇ£ºdianshang-user¡¢dianshang-platform¡¢dianshang-business¡£
ÔÚ dianshang-user Êý¾Ý¿âÖУ¬´´½¨Óû§±í tb_user£¬²¢³õʼ»¯Êý¾Ý


ÔÚ dianshang-platform Êý¾Ý¿âÖУ¬´´½¨ÉÌÆ·±í tb_product£¬²¢³õʼ»¯Êý¾Ý


ÔÚ dianshang-platform Êý¾Ý¿âÖУ¬´´½¨¶©µ¥±í tb_order¡¢¶©µ¥ÏêÇé±í tb_order_detail


5.2¡¢´´½¨¹¤³Ì
Êý¾Ý¿â±íÉè¼ÆÍê³ÉÖ®ºó£¬ÔÚ IDEA Ï´´½¨Ò»¸öÃû³ÆÎªdianshangµÄSpringboot¹¤³Ì¡£
×îÖÕµÄĿ¼ÈçÏÂͼ£º

Ŀ¼½á¹¹ËµÃ÷£º
dianshang-common£ºÖ÷Òª´æ·ÅһЩ¹«¹²¹¤¾ß¿â£¬ËùÓеķþÎñ¶¼¿ÉÒÔÒÀÀµÊ¹ÓÃ
dianshang-business£º¶©µ¥ÖÐÐÄ£¬ÆäÖÐapiÄ£¿éÖ÷ÒªÊÇÌṩdubbo·þÎñ±©Â¶½Ó¿Ú£¬providerÄ£¿éÊÇÒ»¸öspringbootÏîÄ¿£¬Ìṩ·þÎñ´¦Àí²Ù×÷
dianshang-user£ºÓû§ÖÐÐÄ£¬ÆäÖÐapiÄ£¿éºÍproviderÄ£¿é£¬Éè¼ÆÓëÖ®ÀàËÆ
dianshang-platform£ºÉÌÆ·ÖÐÐÄ£¬ÆäÖÐapiÄ£¿éºÍproviderÄ£¿é£¬Éè¼ÆÓëÖ®ÀàËÆ
ÔÚ¸¸ÀàpomÎļþÖмÓÈëdubboºÍzookeeper¿Í»§¶Ë£¬ËùÓÐÒÀÀµµÄÏîÄ¿¶¼¿ÉÒÔʹÓá£
<!-- lombok -->
<dependency> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.4</version> <scope>provided</scope>
</dependency>
<!-- Dubbo Spring Boot Starter -->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId> dubbo-spring-boot-starter</artifactId>
<version>2.7.3</version>
</dependency>
<!-- ÒòΪʹÓõÄÊÇ zookeeper ×÷Ϊע²áÖÐÐÄ£¬ËùÒÔÒªÌí¼Ó zookeeper
ÒÀÀµ -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.13</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--ʹÓÃcurator ×÷Ϊzookeeper¿Í»§¶Ë-->
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework </artifactId>
<version>4.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.curator </groupId>
<artifactId>curator-recipes</artifactId>
<version>4.2.0</version>
</dependency> |
ÎÂܰÌáʾ£ºÐ¡±àÔڴ»·¾³µÄʱºò£¬·¢ÏÖÒ»¸ö¿Ó£¬¹¤³ÌÖÐÒÀÀµµÄzookeeper°æ±¾Óë·þÎñÆ÷µÄ°æ±¾£¬ÐèÒª¾¡Á¿Ò»Ö£¬ÀýÈ磬±¾ÀýÖÐzookeeper·þÎñÆ÷µÄ°æ±¾ÊÇ3.4.14£¬ÄÇôÔÚÒÀÀµzookeeperÎļþ¿âµÄʱºò£¬Ò²¾¡Á¿±£³ÖÒ»Ö£¬Èç¹ûÒÀÀµ3.5.x°æ±¾µÄzookeeper£¬ÏîÄ¿ÔÚÆô¶¯µÄʱºò»á¸÷ÖÖÑýħ¹í¹ÖµÄ±¨´í£¡
5.3¡¢´´½¨Óû§ÖÐÐÄÏîÄ¿
ÔÚ IDEA ÖУ¬´´½¨dianshang-user×ÓÄ£¿é£¬²¢ÒÀÀµdianshang-commonÄ£¿é
<dependencies> <dependency>
<groupId>org.project.demo</groupId>
<artifactId>dianshang-common</artifactId>
<version>1.0.0</version> </dependency>
</dependencies> |
ͬʱ£¬´´½¨dianshang-user-providerºÍdianshang-user-apiÄ£¿é¡£
dianshang-user-api£ºÖ÷Òª¶ÔÆäËû·þÎñÌṩ½Ó¿Ú±©Â¶
dianshang-user-provider£ºÀàËÆÒ»¸öweb¹¤³Ì£¬Ö÷Òª¸ºÔð»ù´¡ÒµÎñµÄcrud£¬Í¬Ê±ÒÀÀµdianshang-user-apiÄ£¿é
5.3.1¡¢ÅäÖÃdubbo·þÎñ
ÔÚdianshang-user-providerµÄapplication.ymlÎļþÖÐÅäÖÃdubbo·þÎñ£¬ÈçÏ£º
#Óû§ÖÐÐÄ·þÎñ¶Ë¿Ú
server:
port: 8080
#Êý¾ÝÔ´ÅäÖÃ
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: "jdbc: mysql://localhost:3306/dianshang-user"
username: root
password: 111111
#dubboÅäÖÃ
dubbo:
scan:
# °üÃû¸ù¾Ý×Ô¼ºµÄʵ¼ÊÇé¿öд
base-packages: org.project.dianshang.user
protocol:
port: 20880
name: dubbo
registry:
#zookeeper×¢²áÖÐÐĵØÖ·
address: zookeeper://192.168.0.107:2181 |
5.3.2¡¢±àд·þÎñ±©Â¶½Ó¿ÚÒÔ¼°ÊµÏÖÀà
ÔÚdianshang-user-apiÄ£¿éÖУ¬´´½¨Ò»¸öUserApi½Ó¿Ú£¬ÒÔ¼°·µ»Ø²ÎÊý¶ÔÏóUserVo£¡
public interface UserApi {
/**
* ²éѯÓû§ÐÅÏ¢
* @param userId
* @return
*/
UserVo findUserById(String userId);
} |
ÆäÖÐUserVo£¬ÐèҪʵÏÖÐòÁл¯£¬ÈçÏ£º
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class UserVo implements Serializable
{ private static final long serialVersionUID
= 1L; /**
* Óû§ID
*/
private String userId; /**
* Óû§ÖÐÎÄÃû
*/
private String userName;
} |
ÔÚdianshang-user-providerÄ£¿éÖУ¬±àдUserApi½Ó¿ÚʵÏÖÀ࣬ÈçÏ£º
@Service(interfaceClass =UserApi.class)
@Component
public class UserProvider implements UserApi
{ @Autowired
private UserService userService; @Override
public UserVo findUserById(String userId) {
QueryWrapper<User> queryWrapper = new
QueryWrapper<User>();
queryWrapper.eq ("user_id",userId);
User source = userService.getOne(queryWrapper);
if(source != null){
UserVo vo = new UserVo();
BeanUtils.copyProperties(source,vo);
return vo;
}
return null;
}
} |
ÆäÖеÄ×¢½â@ServiceÖ¸µÄÊÇorg.apache.dubbo.config.annotation.ServiceϵÄ×¢½â£¬¶ø²»ÊÇSpringϵÄ×¢½âŶ£¡
½Ó×Å£¬ÎÒÃǼÌÐø´´½¨ÉÌÆ·ÖÐÐÄÏîÄ¿£¡
5.4¡¢´´½¨ÉÌÆ·ÖÐÐÄÏîÄ¿
ÓëÓû§ÖÐÐÄÏîÄ¿ÀàËÆ£¬ÔÚ IDEA ÖУ¬´´½¨dianshang-platform×ÓÄ£¿é£¬²¢ÒÀÀµdianshang-commonÄ£¿é
<dependencies>
<dependency>
<groupId>org.project.demo</groupId>
<artifactId>dianshang-common</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies>
|
ͬʱ£¬´´½¨dianshang-platform-providerºÍdianshang-platform-apiÄ£¿é¡£
dianshang-platform-api£ºÖ÷Òª¶ÔÆäËû·þÎñÌṩ½Ó¿Ú±©Â¶
dianshang-platform-provider£ºÀàËÆÒ»¸öweb¹¤³Ì£¬Ö÷Òª¸ºÔð»ù´¡ÒµÎñµÄcrud£¬Í¬Ê±ÒÀÀµdianshang-platform-apiÄ£¿é
5.4.1¡¢ÅäÖÃdubbo·þÎñ
ÔÚdianshang-platform-providerµÄapplication.ymlÎļþÖÐÅäÖÃdubbo·þÎñ£¬ÈçÏ£º
#Óû§ÖÐÐÄ·þÎñ¶Ë¿Ú
server:
port: 8081
#Êý¾ÝÔ´ÅäÖÃ
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: "jdbc: mysql://localhost:3306/dianshang -platform"
username: root
password: 111111
#dubboÅäÖÃ
dubbo:
scan:
# °üÃû¸ù¾Ý×Ô¼ºµÄʵ¼ÊÇé¿öд
base-packages: org.project.dianshang.platform
protocol:
port: 20881
name: dubbo
registry:
#zookeeper×¢²áÖÐÐĵØÖ·
address: zookeeper://192.168.0.107:2181
|
5.4.2¡¢±àд·þÎñ±©Â¶½Ó¿ÚÒÔ¼°ÊµÏÖÀà
ÔÚdianshang-platform-apiÄ£¿éÖУ¬´´½¨Ò»¸öProductApi½Ó¿Ú£¬ÒÔ¼°·µ»Ø²ÎÊý¶ÔÏóProductVo£¡
public interface
ProductApi {
/**
* ͨ¹ýÉÌÆ·ID£¬²éѯÉÌÆ·ÐÅÏ¢
* @param productId
* @return
*/
ProductVo queryProductInfoById (String productId);
}
|
ÆäÖÐProductVo£¬ÐèҪʵÏÖÐòÁл¯£¬ÈçÏ£º
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class ProductVo implements Serializable
{
private static final long serialVersionUID
= 1L; /**ÉÌÆ·ID*/
private String productId; /**ÉÌÆ·Ãû³Æ*/
private String productName; /**ÉÌÆ·¼Û¸ñ*/
private BigDecimal productPrice;
} |
ÔÚdianshang-platform-providerÄ£¿éÖУ¬±àдProductApi½Ó¿ÚʵÏÖÀ࣬ÈçÏ£º
@Service(interfaceClass = ProductApi.class)
@Component
public class ProductProvider implements ProductApi
{
@Autowired
private ProductService productService; @Override
public ProductVo queryProductInfoById(String
productId) {
//ͨ¹ýÉÌÆ·ID²éѯÐÅÏ¢
Product source = productService.getById(productId);
if(source != null){
ProductVo vo = new ProductVo();
BeanUtils.copyProperties(source,vo);
return vo;
}
return null;
}
} |
½Ó×Å£¬ÎÒÃǼÌÐø´´½¨¶©µ¥ÖÐÐÄÏîÄ¿£¡
5.5¡¢´´½¨¶©µ¥ÖÐÐÄÏîÄ¿
ÓëÉÌÆ·ÖÐÐÄÏîÄ¿ÀàËÆ£¬ÔÚ IDEA ÖУ¬´´½¨dianshang-business×ÓÄ£¿é£¬²¢ÒÀÀµdianshang-commonÄ£¿é
<dependencies> <dependency>
<groupId>org.project.demo</groupId>
<artifactId>dianshang-common</artifactId>
<version>1.0.0</version> </dependency>
</dependencies> |
ͬʱ£¬´´½¨dianshang-business-providerºÍdianshang-business-apiÄ£¿é¡£
dianshang-business-api£ºÖ÷Òª¶ÔÆäËû·þÎñÌṩ½Ó¿Ú±©Â¶
dianshang-business-provider£ºÀàËÆÒ»¸öweb¹¤³Ì£¬Ö÷Òª¸ºÔð»ù´¡ÒµÎñµÄcrud£¬Í¬Ê±ÒÀÀµdianshang-business-apiÄ£¿é
5.5.1¡¢ÅäÖÃdubbo·þÎñ
ÔÚdianshang-business-providerµÄapplication.ymlÎļþÖÐÅäÖÃdubbo·þÎñ£¬ÈçÏ£º
#Óû§ÖÐÐÄ·þÎñ¶Ë¿Ú
server:
port: 8082
#Êý¾ÝÔ´ÅäÖÃ
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: "jdbc: mysql://localhost:3306/dianshang
-business"
username: root
password: 111111
#dubboÅäÖÃ
dubbo:
scan:
# °üÃû¸ù¾Ý×Ô¼ºµÄʵ¼ÊÇé¿öд
base-packages: org.project.dianshang.business
protocol:
port: 20882
name: dubbo
registry:
#zookeeper×¢²áÖÐÐĵØÖ·
address: zookeeper://192.168.0.107:2181 |
5.5.2¡¢±àд·þÎñ±©Â¶½Ó¿ÚÒÔ¼°ÊµÏÖÀà
ÔÚdianshang-business-apiÄ£¿éÖУ¬´´½¨Ò»¸öOrderApi½Ó¿Ú£¬ÒÔ¼°·µ»Ø²ÎÊý¶ÔÏóOrderVo£¡
public interface OrderApi {
/**
* ͨ¹ýÓû§ID£¬²éѯÓû§¶©µ¥ÐÅÏ¢
* @param userId
* @return
*/
List<OrderVo> queryOrderByUserId(String
userId);
} |
ÆäÖÐOrderVo£¬ÐèҪʵÏÖÐòÁл¯£¬ÈçÏ£º
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class OrderVo implements Serializable {
private static final long serialVersionUID
= 1L; /**¶©µ¥ID*/
private String orderId; /**¶©µ¥±àºÅ*/
private String orderNo; /**¶©µ¥½ð¶î*/
private BigDecimal orderPrice; /**ϵ¥Ê±¼ä*/
private Date orderTime;
} |
ÔÚdianshang-business-providerÄ£¿éÖУ¬±àдOrderApi½Ó¿ÚʵÏÖÀ࣬ÈçÏ£º
@Service(interfaceClass
= OrderApi.class)
@Component
public class OrderProvider implements OrderApi
{ @Autowired
private OrderService orderService; @Override
public List<OrderVo> queryOrderByUserId(String
userId) {
QueryWrapper<Order> queryWrapper = new
QueryWrapper<Order>();
queryWrapper.eq("user_id",userId);
List<Order> sourceList = orderService.list(queryWrapper);
if(!CollectionUtils.isEmpty(sourceList)){
List<OrderVo> voList = new ArrayList<>();
for (Order order : sourceList) {
OrderVo vo = new OrderVo();
BeanUtils.copyProperties( order, vo);
voList.add(vo);
}
return voList;
}
return null;
}
} |
ÖÁ´Ë£¬3¸öÏîÄ¿µÄ·þÎñ±©Â¶½Ó¿ÚÒѾ¿ª·¢Íê³É£¡½ÓÏÂÀ´ÎÒÃÇÀ´±àдÔõô½øÐÐÔ¶³Ìµ÷Óã¡
5.6¡¢Ô¶³Ìµ÷ÓÃ
5.6.1¡¢±àд´´½¨¶©µ¥·þÎñ
ÔÚdianshang-business-providerÄ£¿éÖУ¬±àд´´½¨¶©µ¥½Ó¿Ú֮ǰ£¬ÏÈÒÀÀµdianshang-business-apiºÍdianshang-user-api£¬ÈçÏ£º
<!--ÉÌÆ··þÎñ½Ó¿Ú±©Â¶ api-->
<dependency>
<groupId>org.project.demo</groupId>
<artifactId>dianshang -platform-api</artifactId>
<version>1.0.0</version>
</dependency>
<!--Óû§·þÎñ½Ó¿Ú±©Â¶ api-->
<dependency>
<groupId>org.project.demo</groupId>
<artifactId>dianshang -user-api</artifactId>
<version>1.0.0</version>
</dependency>
|
ÔÚdianshang-business-providerÄ£¿éÖУ¬±àд´´½¨¶©µ¥·þÎñ£¬ÈçÏ£º
@RestController
@RequestMapping("/order")
public class OrderController { @Autowired
private OrderService orderService; @Autowired
private OrderDetailService orderDetailService; @Reference(check =false)
private ProductApi productApi; @Reference(check =false)
private UserApi userApi; /**
* ÐÂÔö
*/
@JwtIgnore
@RequestMapping(value = "/add")
public boolean add(String productId,String userId){
LocalAssert.isStringEmpty (productId,"²úÆ·Id²»ÄÜΪ¿Õ");
LocalAssert.isStringEmpty (userId,"Óû§Id²»ÄÜΪ¿Õ");
ProductVo productVo = productApi.queryProductInfoById(productId);
LocalAssert.isObjectEmpty (productVo,"δ²éѯµ½²úÆ·ÐÅÏ¢");
UserVo userVo = userApi.findUserById(userId);
LocalAssert.isObjectEmpty (userVo,"δ²éѯµ½Óû§ÐÅÏ¢");
Order order = new Order();
order.setOrderId (IdGenerator.uuid());
order.setOrderNo (System.currentTimeMillis()
+ "");
order.setOrderPrice(productVo.getProductPrice());
order.setUserId(userId);
order.setOrderTime(new Date());
orderService.save(order); OrderDetail orderDetail = new OrderDetail();
orderDetail.setOrderDetailId (IdGenerator.uuid());
orderDetail.setOrderId (order.getOrderId());
orderDetail.setProductId (productId);
orderDetail.setSort(1);
orderDetailService.save (orderDetail);
return true;
}
} |
ÆäÖеÄ@Reference×¢½â£¬ÊÇÊôÓÚorg.apache.dubbo.config.
annotation.ReferenceϵÄ×¢½â£¬±íʾԶ³ÌÒÀÀµ·þÎñ¡£
²ÎÊýcheck =false±íʾÆô¶¯·þÎñʱ£¬²»×öÔ¶³Ì·þÎñ״̬¼ì²é£¬ÕâÑùÉèÖõÄÄ¿µÄ¾ÍÊÇΪÁË·ÀÖ¹µ±Ç°·þÎñÆô¶¯²»ÁË£¬ÀýÈçÓû§ÖÐÐÄÏîĿûÓÐÆô¶¯³É¹¦£¬µ«ÊǶ©µ¥ÖÐÐÄÓÖÒÀÀµÁËÓû§ÖÐÐÄ£¬Èç¹ûcheck=true£¬´Ëʱ¶©µ¥ÖÐÐÄÆô¶¯»á±¨´í£¡
5.6.2¡¢±àдÓû§²éѯ×Ô¼ºµÄ¶©µ¥ÐÅÏ¢
ͬÑùµÄ£¬ÔÚdianshang-user-providerÄ£¿éÖУ¬±àдÓû§²éѯ×Ô¼ºµÄ¶©µ¥ÐÅÏ¢½Ó¿Ú֮ǰ£¬ÏÈÒÀÀµdianshang-business-apiºÍdianshang-user-api£¬ÈçÏ£º
<dependency> <groupId>org.project.demo</groupId>
<artifactId>dianshang-business-api</artifactId>
<version>1.0.0</version>
</dependency>
<dependency> <groupId>org.project.demo</groupId>
<artifactId>dianshang-user-api</artifactId>
<version>1.0.0</version>
</dependency> |
ÔÚdianshang-user-providerÄ£¿éÖУ¬±àдÓû§²éѯ×Ô¼ºµÄ¶©µ¥ÐÅÏ¢½Ó¿Ú£¬ÈçÏ£º
@RestController
@RequestMapping("/user")
public class UserController {
@Reference(check =false)
private OrderApi orderApi;
/**
* ͨ¹ýÓû§ID£¬²éѯ¶©µ¥ÐÅÏ¢
* @param userId
* @return
*/
@RequestMapping("/list")
public List<OrderVo> queryOrderByUserId(String
userId){
return orderApi.queryOrderByUserId( userId);
}
} |
ÖÁ´Ë£¬Ô¶³Ì·þÎñµ÷Ó㬱àдÍê³É£¡
Áù¡¢·þÎñ²âÊÔ
ÔÚ½«ÏîÄ¿²¿ÊðÔÚ·þÎñÆ÷֮ǰ£¬ÔÛÃÇÏȱ¾µØ²âÊÔһϣ¬¿´·þÎñÊÇ·ñ¶¼¿ÉÒÔÅÜͨ£¿
Æô¶¯Óû§ÖÐÐÄdianshang-user-provider

¼ÌÐøÆô¶¯ÉÌÆ·ÖÐÐÄdianshang-platform-provider

½Ó×ÅÆô¶¯¶©µ¥ÖÐÐÄdianshang-business-provider

×îºó£¬ÎÒÃÇÀ´²âÊÔһϷþÎñ½Ó¿ÚÊÇ·ñΪÎÒÃÇÔ¤ÆÚµÄ½á¹û£¿
´ò¿ªä¯ÀÀÆ÷£¬ÊäÈëhttp://127.0.0.1:8082/order/add?
productId=1&userId=1²âÊÔ´´½¨¶©µ¥½Ó¿Ú£¬Ò³ÃæÔËÐнá¹ûÏÔʾÕý³££¡
.jpg)
ÎÒÃÇÔÙÀ´¿´¿´Êý¾Ý¿â£¬¶©µ¥ÊÇ·ñÉú³É£¿


ok£¡ºÜÇåÎúµÄ¿´µ½£¬Êý¾ÝÒѾ½øÈ¥ÁË£¬Ã»É¶ÎÊÌ⣡
ÎÒÃÇÔÙÀ´²âÊÔÒ»ÏÂÔÚÓû§ÖÐÐĶ©µ¥²éѯ½Ó¿Ú£¬ÊäÈëhttp://127.0.0.1:
8080/user/list?userId=1£¬Ò³ÃæÔËÐнá¹ûÈçÏ£¡
µ½´Ë£¬±¾µØ·þÎñ²âÊÔ»ù±¾Í¨¹ý£¡
Æß¡¢·þÎñÆ÷²¿Êð
ÔÚÉÏÎÄÖУ¬ÎÒÃǽéÉÜÁË·þÎñµÄ¹¹½¨¡¢¿ª·¢ºÍ²âÊÔ£¬ÄÇÈçºÎÔÚ·þÎñÆ÷¶Ë²¿ÊðÄØ£¿
Ê×ÏÈ£¬Ð޸ĸ÷¸öÏîÄ¿µÄapplication.ymlÎļþ£¬½«ÆäÖеÄÊý¾ÝÔ´µØÖ·¡¢dubbo×¢²áÖÐÐĵØÖ·ÐÞ¸ÄΪÏßÉÏÄÜÁªÍ¨µÄµØÖ·£¬È»ºóÔÚdianshangĿ¼ÏÂʹÓÃmaven¹¤¾ß¶ÔÕû¸ö¹¤³ÌÖ´ÐÐÈçÏÂÃüÁî½øÐдò°ü£¡
Ò²¿ÉÒÔÔÚ IDEA »·¾³Ï£¬Í¨¹ýmavenÅäÖÃclean installÃüÁîÖ´Ðдò°ü¡£
½«¸÷¸öÏîÄ¿targetĿ¼ÏµÄdianshang-user-provider.jar¡¢dianshang-platform-provider.jar¡¢dianshang-business-provider.jar¿½±´³öÀ´¡£
·Ö±ðÉÏ´«µ½¶ÔÓ¦µÄ·þÎñÆ÷Ŀ¼£¬±¾·þÎñÆ÷²ÉÓõÄÊÇ CentOS7£¬×ܹ²4̨·þÎñÆ÷£¬ÆäÖÐһ̨²¿Êðzookeeper£¬ÁíÍâÈý̨²¿ÊðÈý¸ö΢·þÎñÏîÄ¿¡£
µÇ¼·þÎñÆ÷£¬ÊäÈëÈçÏÂÃüÁȷ±£JDKÒѾ°²×°Íê³É£¡
¹Ø±ÕËùÓзþÎñÆ÷µÄ·À»ðǽ£¬·ÅÐж˿ڷÃÎÊ£¡
#¹Ø±Õ·À»ðǽ
systemctl stop firewalld.service
#½ûÖ¹¿ª»úÆô¶¯
systemctl disable firewalld.service |
Æô¶¯Óû§ÖÐÐÄ·þÎñ£¬ÈÕÖ¾ÐÅÏ¢Êä³öµ½service.log£¨ÐéÄâ»úip£º192.168.0.108£©
nohup java -jar dianshang-user-provider.jar
> service.log 2>&1 &
|
Æô¶¯ÉÌÆ·ÖÐÐÄ·þÎñ£¬ÈÕÖ¾ÐÅÏ¢Êä³öµ½service.log£¨ÐéÄâ»úip£º192.168.0.107£©
nohup java -jar dianshang-platform-provider.jar
> service.log 2>&1 & |
Æô¶¯¶©µ¥ÖÐÐÄ·þÎñ£¬ÈÕÖ¾ÐÅÏ¢Êä³öµ½service.log£¨ÐéÄâ»úip£º192.168.0.109£©
nohup java -jar dianshang-business-provider.jar
> service.log 2>&1 & |
´ò¿ªä¯ÀÀÆ÷£¬ÊäÈëhttp://192.168.0.109:8082/
order/add?productId= 1&userId=1²âÊÔ´´½¨¶©µ¥½Ó¿Ú£¬Ò³ÃæÔËÐнá¹ûÏÔʾÕý³££¡
ÎÒÃÇÔÙÀ´²âÊÔÒ»ÏÂÔÚÓû§ÖÐÐĶ©µ¥²éѯ½Ó¿Ú£¬ÊäÈëÊäÈëhttp://192.168.0.108:
8080/user/list ?userId=1£¬Ò³ÃæÔËÐнá¹ûÈçÏ£¡

ºÜÇåÎúµÄ¿´µ½£¬Êä³öÁË2ÌõÐÅÏ¢£¬µÚ¶þÌõ¶©µ¥ÊÇÔÚ²âÊÔ»·¾³·þÎñÆ÷Éú³ÉµÄ£¬µÚÒ»ÌõÊDZ¾µØ¿ª·¢»·¾³Éú³ÉµÄ¡£
µ½´Ë£¬·þÎñÆ÷²¿Êð»ù±¾ÒѾÍê³É£¡
Èç¹ûÊÇÉú²ú»·¾³£¬¿ÉÄܾÍÐèÒª¶ą̀zookeeperÀ´±£Ö¤¸ß¿ÉÓã¬ÖÁÉÙ2̨·þÎñÆ÷À´²¿ÊðÒµÎñ·þÎñ£¬Í¨¹ý¸ºÔؾùºâÀ´Â·ÓÉ£¡
°Ë¡¢×ܽá
ÕûƬÎÄÕ±Ƚϳ¤£¬Ö÷ÒªÊÇÎ§ÈÆ springboot + dubbo µÄÕûºÏ£¬Í¨¹ý×¢½â¿ª·¢ÊµÏÖÔ¶³Ì·þÎñµ÷ÓÃÏñ´«Í³µÄ
springmvc ¿ª·¢Ò»ÑùÇáËÉ£¬µ±È»»¹¿ÉÒÔͨ¹ýxmlÅäÖ÷½Ê½ÊµÏÖdubbo·þÎñµÄµ÷Óã¬Õâ¸ö»áÔÚºóÆÚÈ¥½éÉÜ¡£
ͬʱҲ½éÉÜÁË·þÎñÆ÷µÄ²¿Ê𣬴ÓÖпÉÒÔ¿´³ö£¬¿ª·¢ËäÈ»¼òµ¥£¬µ«ÊÇÓÉÓÚ·Ö²¼Ê½²¿Êð£¬ÈçºÎ±£Ö¤·þÎñ¸ß¿ÉÓóÉÁË¿ª·¢ÈËԱͷµÈ¹¤×÷ÈÎÎñ£¬ËùÒÔ£¬·Ö²¼Ê½Î¢·þÎñ¿ª·¢ËäÈ»¿ª·¢¼òµ¥£¬µ«ÊÇÈçºÎÈ·±£²¿ÊðµÄ·þÎñ¸ß¿ÉÓã¿ÔËά·½Ãæ»á´øÀ´²»ÉÙµÄÌôÕ½£¡
¾Å¡¢²Î¿¼
1¡¢apache - dubbo - ¹Ù·½Îĵµ |