Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÀûÓÃspringboot+dubbo£¬¹¹½¨·Ö²¼Ê½Î¢·þÎñ£¬È«³Ì×¢½â¿ª·¢
 
×÷ÕߣºÑ¼Ñª·ÛË¿
  3199  次浏览      27
 2020-9-9  
   
 
±à¼­ÍƼö:
±¾ÎÄÖ÷ÒªÊǽéÉÜ 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°²×°Çé¿ö

java -version

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²âÊÔ´´½¨¶©µ¥½Ó¿Ú£¬Ò³ÃæÔËÐнá¹ûÏÔʾÕý³££¡

ÎÒÃÇÔÙÀ´¿´¿´Êý¾Ý¿â£¬¶©µ¥ÊÇ·ñÉú³É£¿

ok£¡ºÜÇåÎúµÄ¿´µ½£¬Êý¾ÝÒѾ­½øÈ¥ÁË£¬Ã»É¶ÎÊÌ⣡

ÎÒÃÇÔÙÀ´²âÊÔÒ»ÏÂÔÚÓû§ÖÐÐĶ©µ¥²éѯ½Ó¿Ú£¬ÊäÈëhttp://127.0.0.1: 8080/user/list?userId=1£¬Ò³ÃæÔËÐнá¹ûÈçÏ£¡

µ½´Ë£¬±¾µØ·þÎñ²âÊÔ»ù±¾Í¨¹ý£¡

Æß¡¢·þÎñÆ÷²¿Êð

ÔÚÉÏÎÄÖУ¬ÎÒÃǽéÉÜÁË·þÎñµÄ¹¹½¨¡¢¿ª·¢ºÍ²âÊÔ£¬ÄÇÈçºÎÔÚ·þÎñÆ÷¶Ë²¿ÊðÄØ£¿

Ê×ÏÈ£¬Ð޸ĸ÷¸öÏîÄ¿µÄapplication.ymlÎļþ£¬½«ÆäÖеÄÊý¾ÝÔ´µØÖ·¡¢dubbo×¢²áÖÐÐĵØÖ·ÐÞ¸ÄΪÏßÉÏÄÜÁªÍ¨µÄµØÖ·£¬È»ºóÔÚdianshangĿ¼ÏÂʹÓÃmaven¹¤¾ß¶ÔÕû¸ö¹¤³ÌÖ´ÐÐÈçÏÂÃüÁî½øÐдò°ü£¡

mvn clean install

Ò²¿ÉÒÔÔÚ IDEA »·¾³Ï£¬Í¨¹ýmavenÅäÖÃclean installÃüÁîÖ´Ðдò°ü¡£

½«¸÷¸öÏîÄ¿targetĿ¼ÏµÄdianshang-user-provider.jar¡¢dianshang-platform-provider.jar¡¢dianshang-business-provider.jar¿½±´³öÀ´¡£

·Ö±ðÉÏ´«µ½¶ÔÓ¦µÄ·þÎñÆ÷Ŀ¼£¬±¾·þÎñÆ÷²ÉÓõÄÊÇ CentOS7£¬×ܹ²4̨·þÎñÆ÷£¬ÆäÖÐһ̨²¿Êðzookeeper£¬ÁíÍâÈý̨²¿ÊðÈý¸ö΢·þÎñÏîÄ¿¡£

µÇ¼·þÎñÆ÷£¬ÊäÈëÈçÏÂÃüÁȷ±£JDKÒѾ­°²×°Íê³É£¡

java -version

¹Ø±ÕËùÓзþÎñÆ÷µÄ·À»ðǽ£¬·ÅÐж˿ڷÃÎÊ£¡

#¹Ø±Õ·À»ðǽ
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 - ¹Ù·½Îĵµ

 
   
3199 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
´óÊý¾Ýƽ̨ϵÄÊý¾ÝÖÎÀí
ÈçºÎÉè¼ÆÊµÊ±Êý¾Ýƽ̨£¨¼¼Êõƪ£©
´óÊý¾Ý×ʲú¹ÜÀí×ÜÌå¿ò¼Ü¸ÅÊö
Kafka¼Ü¹¹ºÍÔ­Àí
ELK¶àÖּܹ¹¼°ÓÅÁÓ
×îпγÌ
´óÊý¾Ýƽ̨´î½¨Óë¸ßÐÔÄܼÆËã
´óÊý¾Ýƽ̨¼Ü¹¹ÓëÓ¦ÓÃʵս
´óÊý¾ÝϵͳÔËά
´óÊý¾Ý·ÖÎöÓë¹ÜÀí
Python¼°Êý¾Ý·ÖÎö
³É¹¦°¸Àý
ijͨÐÅÉ豸ÆóÒµ PythonÊý¾Ý·ÖÎöÓëÍÚ¾ò
Ä³ÒøÐÐ È˹¤ÖÇÄÜ+Python+´óÊý¾Ý
±±¾© Python¼°Êý¾Ý·ÖÎö
ÉñÁúÆû³µ ´óÊý¾Ý¼¼Êõƽ̨-Hadoop
ÖйúµçÐÅ ´óÊý¾Ýʱ´úÓëÏÖ´úÆóÒµµÄÊý¾Ý»¯ÔËӪʵ¼ù