单体架构的优点:部署成本低
负载均衡:让每一个服务器都有很均衡的负载量
rpc(远程过程调用)
rpc工作原理:socket套接字(ip+端口)
为什么用这个?因为随着用户量和海量的请求,后端基本都是规模庞大的分布式集群,而rpc就是其中核心技术。
rpc好处是什么呢?好到这个地步:调用服务的时候就如同调用本地服务一样,不必关心网络通信细节。
Dubbo架构: 是高性能的java rpc框架
dubbo是阿里巴巴2011年开源的分布式服务框架,主要提供三个功能
远程接口调用,负载均衡和容错,服务注册和服务发现。
dubbo运行流程的是这样的:
注册中心:订单业务想做支付业务,怎么知道支付业务在哪个模块上呢
dubbo支持四种注册中心:
multicast注册中心,Zookeeper注册中心,redis注册中心,simple注册中心
1.将服务提供者注册到注册中心(暴露服务)
(1)导入dubbo依赖和操作Zookeeper的客户端(curator)依赖
dubbo2.6之前引入zkclient操作zookeeper
dubbo2.6及之后引入curator操作zookeeper
org.apache.dubbo dubbo2.7.10 org.apache.curator curator-framework4.3.0.7.2.10.0-148
(2)配置服务提供者 provider.xml
2.让服务消费者去注册中心订阅服务提供者的服务地址
(3)配置消费者 consumer.xml
dubbo-monitor:用来统计服务的调⽤次数和调⽤时间的监控中⼼。
服务提供者的真正实现类:
public class UserServiceImpl implements UserService{
//按照用户id返回他所有的收货地址
public List getUserAddressList(String userId){
UserAddress address1=new UserAddress(1,"北京市昌平区","1");
UserAddress address1=new UserAddress(2,"深圳市宝安区","1");
return Arrays.asList(address1,address2);
}
}
服务消费者:
public class MainApplication{
public static void main(){
ClassPathXmlApplicationContext applicationContext=new
ClassPathXmlApplicationContext("consumer.xml");
OrderService orderService=applicationContext.getBean(OrderService.class);
//查询用户的地址
List addressList=orderService.initOrder("1");
}
}



