阿里云1M做网站闸北区网站建设网
news/
2025/10/6 1:37:10/
文章来源:
阿里云1M做网站,闸北区网站建设网,好看简单易做的网站,东莞网络推广外包托管狂神说SpringBoot系列连载课程#xff0c;通俗易懂#xff0c;基于SpringBoot2.2.5版本#xff0c;欢迎各位狂粉转发关注学习。未经作者授权#xff0c;禁止转载分布式理论什么是分布式系统#xff1f;在《分布式系统原理与范型》一书中有如下定义#xff1a;“分布式系统… 狂神说SpringBoot系列连载课程通俗易懂基于SpringBoot2.2.5版本欢迎各位狂粉转发关注学习。未经作者授权禁止转载分布式理论什么是分布式系统在《分布式系统原理与范型》一书中有如下定义“分布式系统是若干独立计算机的集合这些计算机对于用户来说就像单个相关系统”分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器处理更多的数据。分布式系统(distributed system)是建立在网络之上的软件系统。首先需要明确的是只有当单个节点的处理能力无法满足日益增长的计算、存储任务的时候且硬件的提升(加内存、加磁盘、使用更好的CPU)高昂到得不偿失的时候应用程序也不能进一步优化的时候我们才需要考虑分布式系统。因为分布式系统要解决的问题本身就是和单机系统一样的而由于分布式系统多节点、通过网络通信的拓扑结构会引入很多单机系统没有的问题为了解决这些问题又会引入更多的机制、协议带来更多的问题。。。Dubbo文档随着互联网的发展网站应用的规模不断扩大常规的垂直应用架构已无法应对分布式服务架构以及流动计算架构势在必行急需一个治理系统确保架构有条不紊的演进。在Dubbo的官网文档有这样一张图单一应用架构当网站流量很小时只需一个应用将所有功能都部署在一起以减少部署节点和成本。此时用于简化增删改查工作量的数据访问框架(ORM)是关键。适用于小型网站小型管理系统将所有功能都部署到一个功能里简单易用。缺点1、性能扩展比较难2、协同开发问题3、不利于升级维护垂直应用架构当访问量逐渐增大单一应用增加机器带来的加速度越来越小将应用拆成互不相干的几个应用以提升效率。此时用于加速前端页面开发的Web框架(MVC)是关键。通过切分业务来实现各个模块独立部署降低了维护和部署的难度团队各司其职更易管理性能扩展也更方便更有针对性。缺点公用模块无法重复利用开发性的浪费分布式服务架构当垂直应用越来越多应用之间交互不可避免将核心业务抽取出来作为独立的服务逐渐形成稳定的服务中心使前端应用能更快速的响应多变的市场需求。此时用于提高业务复用及整合的分布式服务框架(RPC)是关键。流动计算架构当服务越来越多容量的评估小服务资源的浪费等问题逐渐显现此时需增加一个调度中心基于访问压力实时管理集群容量提高集群利用率。此时用于提高机器利用率的资源调度和治理中心(SOA)[ Service Oriented Architecture]是关键。什么是RPCRPC【Remote Procedure Call】是指远程过程调用是一种进程间通信方式他是一种技术的思想而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的函数本质上编写的调用代码基本相同。也就是说两台服务器AB一个应用部署在A服务器上想要调用B服务器上应用提供的函数/方法由于不在一个内存空间不能直接调用需要通过网络来表达调用的语义和传达调用的数据。为什么要用RPC呢就是无法在一个进程内甚至一个计算机内通过本地调用的方式完成的需求比如不同的系统间的通讯甚至不同的组织间的通讯由于计算能力需要横向扩展需要在多台机器组成的集群上部署应用。RPC就是要像调用本地的函数一样去调远程函数推荐阅读文章https://www.jianshu.com/p/2accc2840a1bRPC基本原理步骤解析RPC两个核心模块通讯序列化。测试环境搭建DubboApache Dubbo |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架它提供了三大核心能力面向接口的远程方法调用智能容错和负载均衡以及服务自动注册和发现。dubbo官网 http://dubbo.apache.org/zh-cn/index.html1.了解Dubbo的特性2.查看官方文档dubbo基本概念服务提供者(Provider)暴露服务的服务提供方服务提供者在启动时向注册中心注册自己提供的服务。服务消费者(Consumer)调用远程服务的服务消费方服务消费者在启动时向注册中心订阅自己所需的服务服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。注册中心(Registry)注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者监控中心(Monitor)服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心调用关系说明l 服务容器负责启动加载运行服务提供者。l 服务提供者在启动时向注册中心注册自己提供的服务。l 服务消费者在启动时向注册中心订阅自己所需的服务。l 注册中心返回服务提供者地址列表给消费者如果有变更注册中心将基于长连接推送变更数据给消费者。l 服务消费者从提供者地址列表中基于软负载均衡算法选一台提供者进行调用如果调用失败再选另一台调用。l 服务消费者和提供者在内存中累计调用次数和调用时间定时每分钟发送一次统计数据到监控中心。Dubbo环境搭建点进dubbo官方文档推荐我们使用Zookeeper 注册中心什么是zookeeper呢可以查看官方文档Window下安装zookeeper1、下载zookeeper 地址 我们下载3.4.14 最新版解压zookeeper2、运行/bin/zkServer.cmd 初次运行会报错没有zoo.cfg配置文件可能遇到问题闪退 !解决方案编辑zkServer.cmd文件末尾添加pause 。这样运行出错就不会退出会提示错误信息方便找到原因。3、修改zoo.cfg配置文件将conf文件夹下面的zoo_sample.cfg复制一份改名为zoo.cfg即可。注意几个重要位置dataDir./ 临时数据存储的目录(可写相对路径)clientPort2181 zookeeper的端口号修改完成后再次启动zookeeper4、使用zkCli.cmd测试ls /列出zookeeper根下保存的所有节点[zk: 127.0.0.1:2181(CONNECTED) 4] ls /[zookeeper]create –e /kuangshen 123创建一个kuangshen节点值为123get /kuangshen获取/kuangshen节点的值我们再来查看一下节点window下安装dubbo-admindubbo本身并不是一个服务软件。它其实就是一个jar包能够帮你的java程序连接到zookeeper并利用zookeeper消费、提供服务。但是为了让用户更好的管理监控众多的dubbo服务官方提供了一个可视化的监控程序dubbo-admin不过这个监控即使不装也不影响使用。我们这里来安装一下1、下载dubbo-admin地址 https://github.com/apache/dubbo-admin/tree/master2、解压进入目录修改 dubbo-admin\src\main\resources \application.properties 指定zookeeper地址server.port7001spring.velocity.cachefalsespring.velocity.charsetUTF-8spring.velocity.layout-url/templates/default.vmspring.messages.fallback-to-system-localefalsespring.messages.basenamei18n/messagespring.root.passwordrootspring.guest.passwordguestdubbo.registry.addresszookeeper://127.0.0.1:21813、在项目目录下打包dubbo-adminmvn clean package -Dmaven.test.skiptrue 第一次打包的过程有点慢需要耐心等待直到成功4、执行 dubbo-admin\target 下的dubbo-admin-0.0.1-SNAPSHOT.jarjava -jar dubbo-admin-0.0.1-SNAPSHOT.jar【注意zookeeper的服务一定要打开】执行完毕我们去访问一下 http://localhost:7001/ 这时候我们需要输入登录账户和密码我们都是默认的root-root登录成功后查看界面安装完成SpringBoot Dubbo zookeeper框架搭建1. 启动zookeeper 2. IDEA创建一个空项目3.创建一个模块实现服务提供者provider-server 选择web依赖即可4.项目创建完毕我们写一个服务比如卖票的服务编写接口package com.kuang.provider.service;public interface TicketService { public String getTicket();}编写实现类package com.kuang.provider.service;public class TicketServiceImpl implements TicketService { Override public String getTicket() { return 《狂神说Java》; }}5.创建一个模块实现服务消费者consumer-server 选择web依赖即可6.项目创建完毕我们写一个服务比如用户的服务编写servicepackage com.kuang.consumer.service;public class UserService { //我们需要去拿去注册中心的服务}需求现在我们的用户想使用买票的服务这要怎么弄呢 服务提供者1、将服务提供者注册到注册中心我们需要整合Dubbo和zookeeper所以需要导包我们从dubbo官网进入github看下方的帮助文档找到dubbo-springboot找到依赖包dependency groupIdorg.apache.dubbogroupId artifactIddubbo-spring-boot-starterartifactId version2.7.3versiondependency zookeeper的包我们去maven仓库下载zkclientdependency groupIdcom.github.sgroschupfgroupId artifactIdzkclientartifactId version0.1versiondependency【新版的坑】zookeeper及其依赖包解决日志冲突还需要剔除日志依赖dependency groupIdorg.apache.curatorgroupId artifactIdcurator-frameworkartifactId version2.12.0versiondependencydependency groupIdorg.apache.curatorgroupId artifactIdcurator-recipesartifactId version2.12.0versiondependencydependency groupIdorg.apache.zookeepergroupId artifactIdzookeeperartifactId version3.4.14version exclusions exclusion groupIdorg.slf4jgroupId artifactIdslf4j-log4j12artifactId exclusion exclusionsdependency2、在springboot配置文件中配置dubbo相关属性#当前应用名字dubbo.application.nameprovider-server#注册中心地址dubbo.registry.addresszookeeper://127.0.0.1:2181#扫描指定包下服务dubbo.scan.base-packagescom.kuang.provider.service3、在service的实现类中配置服务注解发布服务注意导包问题import org.apache.dubbo.config.annotation.Service;import org.springframework.stereotype.Component;Service //将服务发布出去Component //放在容器中public class TicketServiceImpl implements TicketService { Override public String getTicket() { return 《狂神说Java》; }}逻辑理解 应用启动起来dubbo就会扫描指定的包下带有component注解的服务将它发布在指定的注册中心中服务消费者1、导入依赖和之前的依赖一样dependency groupIdorg.apache.dubbogroupId artifactIddubbo-spring-boot-starterartifactId version2.7.3versiondependencydependency groupIdcom.github.sgroschupfgroupId artifactIdzkclientartifactId version0.1versiondependencydependency groupIdorg.apache.curatorgroupId artifactIdcurator-frameworkartifactId version2.12.0versiondependencydependency groupIdorg.apache.curatorgroupId artifactIdcurator-recipesartifactId version2.12.0versiondependencydependency groupIdorg.apache.zookeepergroupId artifactIdzookeeperartifactId version3.4.14version exclusions exclusion groupIdorg.slf4jgroupId artifactIdslf4j-log4j12artifactId exclusion exclusionsdependency2、配置参数#当前应用名字dubbo.application.nameconsumer-server#注册中心地址dubbo.registry.addresszookeeper://127.0.0.1:21813. 本来正常步骤是需要将服务提供者的接口打包然后用pom文件导入我们这里使用简单的方式直接将服务的接口拿过来路径必须保证正确即和服务提供者相同4. 完善消费者的服务类package com.kuang.consumer.service;import com.kuang.provider.service.TicketService;import org.apache.dubbo.config.annotation.Reference;import org.springframework.stereotype.Service;Service //注入到容器中public class UserService { Reference //远程引用指定的服务他会按照全类名进行匹配看谁给注册中心注册了这个全类名 TicketService ticketService; public void bugTicket(){ String ticket ticketService.getTicket(); System.out.println(在注册中心买到ticket); }}5. 测试类编写RunWith(SpringRunner.class)SpringBootTestpublic class ConsumerServerApplicationTests { Autowired UserService userService; Test public void contextLoads() { userService.bugTicket(); }}启动测试1. 开启zookeeper2. 打开dubbo-admin实现监控【可以不用做】3. 开启服务者4. 消费者消费测试结果监控中心 ok , 这就是SpingBoot dubbo zookeeper实现分布式开发的应用其实就是一个服务拆分的思想end视频同步更新这次一定
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/928905.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!