Dubbo use and principles

What Dubbo that?

Dubbo is the core framework Alibaba SOA service governance program, daily visits 3,000,000,000+ amount of support for 2,000+ one service, and is widely used in various member sites Alibaba Group.
Dubbo [] is a distributed service framework , is committed to providing high-performance and transparency of RPC remote service call programs, services and SOA governance program .

The core section includes:
  • Remote Communication: providing a variety of frame based NIO package length abstract connection model comprises a plurality of threads, serialization, and - information exchange "request-response" mode.
  • Fault-tolerant cluster: providing a transparent interface method is based on remote procedure calls, including multi-protocol support, as well as soft load balancing, fault tolerance failure, address routing, dynamic configuration and other cluster support.
  • Automatic discovery: a registry-based directory service, the service can only consume dynamic lookup service provider, the address is transparent, so that the service provider may increase or decrease smooth machine.

What do Dubbo?

  • Transparent remote method invocation, the same as calling a local method call remote methods, only a simple configuration, without any intrusion API.
  • Soft load balancing and fault tolerance mechanisms, including the network can replace F5 hardware load balancer, lower costs, reduce single point.
  • Automatic registration and service discovery, no longer need to write the dead service provider address, IP address registry based query interface name service provider, and can be smoothly add or remove services provider.

Spring Integration

Spring arrangement with full Dubbo, transparent access applications, application no intrusion API, the configuration can be simply loaded with Spring Dubbo, Dubbo Spring-loaded extension Schema.

The above brief introduction to some of the concepts of Dubbo, to give a diagram to describe the image under here: 

we use to describe this picture, then mapped to the project:
       When we deploy different systems in multiple Tomcat, such as A system (TomcatA) want to call the B system (TomcatB) in service, then Dubbo comes into play.
       First of all we need B system in the registry will own Url registered in, and then returned to the registry will Url system A, then A system can be called up.
  Of course I said here is just one use of Dubbo, used in this project is Dubbo remote function calls. (And really feel a bit like a webservice)

Here come to the question, look at Dubbo use cases in the project :
1, linux install Zookeeper in
this place is not outlined in detail Zookeeper installed in front of Bowen on Linux has been talked about in Linux software is installed, installed after the start Zookeeper directly here.


2, needs
here when we have a need, we need the background (console) to the commodity (product) to do some exercise to do, and here we are only able to use the public service method, then how to achieve product in service calls it? 
project structure:

public service method:
TestTbService.java:

复制代码
1 package cn.itcast.core.service;
2 
3 import cn.itcast.core.bean.TestTb;
4 
5 public interface TestTbService {
6     public void insertTestTb(TestTb testTb);
7 }
复制代码





The service implementation class product:
TestTbService.java:

复制代码
 1 package cn.itcast.core.service;
 2 
 3 import org.springframework.beans.factory.annotation.Autowired;
 4 import org.springframework.stereotype.Service;
 5 import org.springframework.transaction.annotation.Transactional;
 6 
 7 import cn.itcast.core.bean.TestTb;
 8 import cn.itcast.core.dao.TestTbDao;
 9 
10 @Service("testTbService")
11 @Transactional
12 public class TestTbServiceImpl implements TestTbService {
13 
14     @Autowired
15     private TestTbDao testTbDao;
16     
17     //保存
18     public void insertTestTb(TestTb testTb){
19         testTbDao.insertTestTb(testTb);
20     }
21 }
复制代码



在console中使用product中的service实现类:
CenterController.java:

复制代码
 1 package cn.itcast.core.controller;
 2 
 3 import java.util.Date;
 4 
 5 import org.junit.runners.model.TestTimedOutException;
 6 import org.springframework.beans.factory.annotation.Autowired;
 7 import org.springframework.stereotype.Controller;
 8 import org.springframework.ui.Model;
 9 import org.springframework.web.bind.annotation.RequestMapping;
10 
11 import cn.itcast.core.bean.TestTb;
12 import cn.itcast.core.service.TestTbService;
13 
14 @Controller
15 public class CenterController {
16     
17     @Autowired
18     private TestTbService testTbService;
19     
20     //测试
21     @RequestMapping(value = "/test/index.do")
22     public void index(Model model){
23         
24         TestTb testTb = new TestTb();
25         testTb.setName("范冰冰");
26         testTb.setBirthday(new Date());
27         
28         testTbService.insertTestTb(testTb);
29         
30     }
31 }
复制代码

 

如果这样直接调用能够行的通吗?  当然是不行的, 在console里面定义的只是service方法, 那么这里是怎么直接调用到了product中的service实现类呢?

当然了, 这里就需要一些配置文件了:    首先是需要在product中注册服务:   dubbo-provider.xml:

复制代码
 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
 3     xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop" 
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:task="http://www.springframework.org/schema/task"
 7     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 8     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 9         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
10         http://www.springframework.org/schema/mvc 
11         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
12         http://www.springframework.org/schema/context 
13         http://www.springframework.org/schema/context/spring-context-4.0.xsd 
14         http://www.springframework.org/schema/aop 
15         http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
16         http://www.springframework.org/schema/tx 
17         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
18         http://www.springframework.org/schema/task
19            http://www.springframework.org/schema/task/spring-task-4.0.xsd
20         http://code.alibabatech.com/schema/dubbo        
21         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
22         
23         
24         <!-- 整合Dubbo -->
25         <!-- 第一步:Dubbo起名称    计算用此名称来区分   -->
26         <dubbo:application name="babasport-service-product"/>
27         <!-- 第二步:中介  注册中心: zookeeper  redis ... -->
28         <!-- <dubbo:registry address="192.168.200.128:2181,192.168.200.129:2181,192.168.200.130:2181" protocol="zookeeper"/> -->
29         <dubbo:registry address="192.168.200.128:2181" protocol="zookeeper"/>
30         <!-- 第三步:设置dubbo的端口号     192.168.40.88:20880/接口  -->
31         <dubbo:protocol name="dubbo" port="20880"/>
32         <!-- 第四步:设置服务提供方 提供的接口 -->
33         <dubbo:service interface="cn.itcast.core.service.TestTbService" ref="testTbService"/>
34         
35 </beans>
复制代码

接下来就是在console中使用了:   服务消费方:    dubbo-cusmer.xml:

复制代码
 1 <beans xmlns="http://www.springframework.org/schema/beans"
 2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
 3     xmlns:context="http://www.springframework.org/schema/context"
 4     xmlns:aop="http://www.springframework.org/schema/aop" 
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:task="http://www.springframework.org/schema/task"
 7     xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
 8     xsi:schemaLocation="http://www.springframework.org/schema/beans 
 9         http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
10         http://www.springframework.org/schema/mvc 
11         http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd 
12         http://www.springframework.org/schema/context 
13         http://www.springframework.org/schema/context/spring-context-4.0.xsd 
14         http://www.springframework.org/schema/aop 
15         http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
16         http://www.springframework.org/schema/tx 
17         http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
18         http://www.springframework.org/schema/task
19            http://www.springframework.org/schema/task/spring-task-4.0.xsd
20         http://code.alibabatech.com/schema/dubbo        
21         http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
22         
23         <!-- 整合Dubbo -->
24         <!-- 第一步:Dubbo起名称    计算用此名称来区分   -->
25         <dubbo:application name="babasport-console"/>
26         <!-- 第二步:中介  注册中心    zookeeper  redis ... -->
27         <!--<dubbo:registry address="192.168.200.128:2181,192.168.200.129:2181,192.168.200.130:2181" protocol="zookeeper"/> -->
28         <dubbo:registry address="192.168.200.128:2181" protocol="zookeeper"/>
29         <!-- 第三步:调用服务提供方 提供的接口 -->
30         <dubbo:reference interface="cn.itcast.core.service.TestTbService" id="testTbService"/>
31         
32 </beans>
复制代码



剩下的就是启动服务了:
注意先启动服务提供方, 然后再启动服务消费方.

 

 转:https://www.cnblogs.com/wang-meng/p/5791598.html

 

Guess you like

Origin www.cnblogs.com/651434092qq/p/11592285.html