首页 文章 精选 留言 我的

精选列表

搜索[Vite构建],共10000篇文章
优秀的个人博客,低调大师

构建springmvc+dubbo分布式平台-dubbo简介

1.Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有dubbo这样的分布式服务框架的需求,并且本质上是个服务调用,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSDL,以服务者与消费者的方式在dubbo上注册)。 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。 dubbo能做什么? 1.透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。 2.软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。 dubbo的架构 dubbo架构图如下: 节点角色说明: Provider:暴露服务的服务提供方。 Consumer:调用远程服务的服务消费方。 Registry:服务注册与发现的注册中心。 Monitor:统计服务的调用次调和调用时间的监控中心。 Container:服务运行容器。 调用关系说明: 0 服务容器负责启动,加载,运行服务提供者。 服务提供者在启动时,向注册中心注册自己提供的服务。 服务消费者在启动时,向注册中心订阅自己所需的服务。 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。 服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。 服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。 dubbo的容错性显而易见,性能方面还没有还得及测,我们系统某页面需要掉5次接口,本来想建议做个缓存,但业务关系不能采纳,还需要研究下dubbo的性能调优问题 dubbo使用方法 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。如果不想使用Spring配置,而希望通过API的方式进行调用(不推荐),后面的章节中我们会逐步剖析dubbo的使用!

优秀的个人博客,低调大师

SSM框架构建多模块之业务拆分实践

在如下这两篇篇文章我都或多或少强调过业务分层方面的的方法和注意事项,感兴趣的可以看看: 系统设计和系统划分有定律可循 业务拆分的思考 之前是说,现在是做。以我个人博客为例,我的博客最初只是一个单体应用,但是我决定将其拆分为多个模块,总体来说,还是一个单体war。但是性质是不一样的。 下面进入正题: 贴图说明: blog-parent是父工程 blog-common主要放置工具类和其他可以复用的第三方插件或者是其他功能类 blog-entity 放置实体,通常是pojo也可以叫entity或者javabean blog-dao 放置与数据库交互的接口类,也就是mapper blog-service 业务接口及其实现类 blog-web 前台展示同时如果还开发安卓应用的话,直接提供接口 blog-generator 是代码生成器,主要应用于个人开发,提高效率用的 上述的依赖关系除了blog-generator之外,可以用思维导图可以表示为如下所示: 不过这个结构似乎也不太合理,适用于目前而言,业务不是特别大,最好采用这种形式表示: 两图比较主要区别在于将blog-common放到blog-service中,因为blog-service是业务逻辑,通常业务逻辑是可以复用多个的,而像一些判断或者是引用第三方插件,通常都在业务逻辑里具体实现后,而web模块中controlller直接调用即可,如果不放在blog-service中,就会出现一个问题,问题的主要凸显就是业务逻辑复用性差,导致很多都在controller里面下,也就是接口里面写,不利于复用,而且代码质量也会下降。 注意: 每个依赖记得都要maven install安装到本地仓库,否则会依赖不了,报错。 项目github地址为:https://github.com/youcong1996/ChallengerV.git 项目结果图如下所示: 前端模板主要采用的是layui,其实bootstrap也有很多这样的,大家可以在网上找找。 其实我参考了github上的不少项目还有一些小伙伴们的博客,其实还可以再细化分为如下(这里我还是用思维导图表示): 这样做的好处,主要是考虑可扩展性,前面列举的图一和图二可扩展性不是特别好,当然了,如果对于是一个人开发的话,直接单体应用即可,不用拆分,如果是两到三个人,可以按照图一和图二来。当然了,图一和图二还有一个考虑就是可读性,公司开发人员流动性比较强,特别是中小公司,总会有人走,也总会有人来,假如你是来的人,如果看到公司所有的代码全部在一个单体war上,而且有很多很多的com.xxxxx之类的,而且com.xxxxx下还有几十个类,试问你会作什么感想呢。 按照图三的设计,以后的扩展可以是这样: 随着业务一步一步扩大,可以将blog-web拆分为六个war,这就可能用到微服务架构了。 最后小结: 业务的扩展是一步一步慢慢来的,绝非一开始直接就业务拆分和分布式,那都是扯淡。

优秀的个人博客,低调大师

Node.js构建可扩展的Web应用1

《Practical Node.js:Building Real-World Scalable Web Apps》【美】Azat Mardan(电子工业出版社) 安装node.js和NPM(node.js的包管理器) 官网地址:https://nodejs.org/en/ 找到对应的系统版本的安装包,下载,我的是win-64位系统 验证安装 安装完成后,按win+r打卡命令行,输入cmd,打开dos窗口 输入:node -v,查看node.js的版本信息 输入:npm -v,查看npm的版本信息 现在的npm都是随着node一起安装的,很方便,不用另外安装! 出现类似以下信息,说明安装成功!!! 具体操作可以参考我的另外一篇博文: https://www.cnblogs.com/1906859953Lucas/p/9573424.html 使用Express.js 4创建node.js的web应用程序 Express.js是基于node.js的http模块和connect组件的web框架,这些组件叫做中间件,开发的理念是“约定大于配置”。 安装Express dos中输入:npm install express,不过不建议直接使用,可以使用淘宝镜像 使用淘宝 NPM 镜像 大家都知道国内直接使用 npm 的官方镜像是非常慢的,这里推荐使用淘宝 NPM 镜像。 淘宝 NPM 镜像是一个完整 npmjs.org 镜像,你可以用此代替官方版本(只读),同步频率目前为 10分钟 一次以保证尽量与官方服务同步。 你可以使用淘宝定制的 cnpm (gzip 压缩支持) 命令行工具代替默认的 npm: npm install -g cnpm --registry=https://registry.npm.taobao.org 这样就可以使用 cnpm 命令来安装模块了: cnpm install [name] 更多信息可以查阅:http://npm.taobao.org/。 为了方便测试,新建一个demo文件夹,来安装需要的express dos定位到demo路径,输入:cnpm install express,安装 安装完毕,demo文件夹中会产生一个node_modules文件夹,所有安装的模块都会在里面 这一块由于作者使用的ios系统,我的Windows系统,写的看不懂 未完待续。。。 基于Mocha的测试驱动开发和行为驱动开发 Mocha(发音"摩卡")诞生于2011年,是现在最流行的JavaScript测试框架之一,在浏览器和Node环境都可以使用。 所谓"测试框架",就是运行测试的工具。通过它,可以为JavaScript应用添加测试,从而保证代码的质量。 测试驱动开发(TDD,test drive development)是一种主要的敏捷开发技术。一边写,一边测试,增加程序员信心,获取更有效率的开发。 行为驱动开发(BDD,behavior dirve development)是基于TDD的,是一个专业版本,从业务需求角度出发需要的测试单元。 安装Mocha测试框架 dos输入:cnpm install -g mocha 使用mocha测试js脚本 这里还使用到了chai.js,所以请一并安装吧 输入:cnpm install chai add.js // add.js function add(x, y) { return x + y; } module.exports = add; add_test.js // add_test.js var add = require('./add.js'); var expect = require('chai').expect; describe('加法函数的测试', function() { it('1 加 1 应该等于 2', function() { expect(add(1, 1)).to.be.equal(2); }); it('1 加 3 应该等于 4', function() { expect(add(1, 3)).to.be.equal(4); }); }); dos输入:mocha add_test.js 测试通过!!! 稍加改动,让他错误 // add_test.js var add = require('./add.js'); var expect = require('chai').expect; describe('加法函数的测试', function() { it('1 加 1 应该等于 2', function() { expect(add(1, 1)).to.be.equal(2); }); it('1 加 3 应该不等于 5', function() { expect(add(1, 3)).to.be.equal(5); }); }); 会看见具体的报错信息:

优秀的个人博客,低调大师

50 行 Python 代码构建一个区块链

尽管有人认为区块链 (blockchain) 是一个答案先于问题的技术,但毫无疑问, 这项新的技术已然是一个计算的奇迹。不过,到底区块链是什么呢 区块链 一个随时间增长,记录比特币或其他加密货币的交易的公开数字账本。 简单来说,区块链是一个公开的数据库,新的数据会被存储到一个叫做区块 (block) 的数据结构中,而区块会被添加到一个不可更改的链 (chain) 上 (也就是区块链),该链上存储着过去所添加的所有数据。在比特币和其他一些加密货币中,这些数据就是交易。不过,实际上,这些数据可以是任何类型。 区块链技术催生了像比特币,莱特币这样全新的完全数字资产,它们不由任何一个中心权威机构发行或管理。这给那些不信任现有银行系统的个人带来了新的选项。区块链也重新定义了分布式计算,出现了像以太坊这样的技术,它引入了像智能合约这样新的概念。 在本文

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册