• [问题求助] arm64架构的麒麟系统,无法安装node-ffi模块
    【功能模块】在这个arm64架构的麒麟服务器上面,创建了一个nodejs项目,这个项目会依赖ffi模块,但是安装ffi依赖模块的时候报错,安装失败。【操作步骤&问题现象】执行命令:sudo npm install ffi【截图信息】【日志信息】(可选,上传日志内容或者附件)
  • Cloud9 ide 云开发环境介绍
    Cloud9 IDE是一个基于Node.JS构建的JavaScript程序开发Web IDE。它拥有一个非常快的文本编辑器支持为JS, HTML, CSS和这几种的混合代码进行着色显示。Cloud9 IDE还为node.js和Google Chrome集成调试器可以在IDE中启动、暂停和停止。能够在云计算环境中测试和部署你的代码。使用WebDAV,它还可以连到远程工作台。Cloud9 IDE拥有一个插件系统用来扩展现有功能,当前该IDE已经捆绑好几个插件。Node.js介绍Node.js是一套用来编写高性能网络服务器的JavaScript工具包,一系列的变化由此开始。比较独特的是,Node.js会假设你是在POSIX环境下运行它Linux 或 Mac OS X。如果你是在Windows下,那就需要安装MinGW以获得一个仿POSIX的环境。在Node中,Http是首要的。Node为创建http服务器作了优化,所以你在网上看到的大部分示例和库都是集中在web上(http框架、模板库等)。这个软件被一个网站评为2011最佳开源软件之一。可见其中的分量,据说具有极高的并发量。当然也要看应用了。Cloud9 ide项目最初的时候,Cloud9仅仅是重新组织了一下Eclipse的视觉元素,而且它也同样使用了Eclipse的插件思想。所有的功能都是由插件来完成 的,包括编辑器,视图,行为等。JavaScript插件的一个好处是可以轻松处理JSON格式的元数据描述字符,让插件开发者省心不少。从功能上来说,至少和成熟的IDE相比功能还是不够的。不过现在它已经有很多很方便的功能了。JavaScript Debugging已经支持GUI、Node.js脚本调试的连接器以及Chrome runtimes,并且在GUI中能够挂起,恢复和设置断点。这个特性的关键在于使用了JavaScript VM的内建调试器。    Cloud9使用ACE作为编辑器组件。编辑器的窗格是DIV元素;ACE能够决定在编辑器中哪些能够显示,把这些内容作为DIV元素渲染 然后加入到编辑器的DIV中。ACE使用多层DIV来渲染编辑器中不同的元素,尤其是光标和选择高亮的实现。看起来现在的HTML渲染器和DOM已经足够强大,能够让ACE高速运行,给用户感觉是像一个原生的编辑器组件。对编辑器组件大有裨益的一个HTML5 API是Web Worker API,这个组件允许JavaScript代码能够新建JavaScript进程,而不是所谓的无共享的进程,它们之间的通信是使用JSON格式的数据。 在程序员的编辑器中,在后台运行任务是非常重要的;每次敲击键盘或者操作都会产生大量的工作。使用正则表达式的语法高亮就是其中之一,但是,现代编辑器需 要解析源代码来做语义高亮,例如,用不同颜色表示局部变量和全局变量,静态方法和虚拟方法等。其他的特性还包括代码折叠支持等。可以聪明地通过使用 setTimeout来在前台线程中运行这些任务。Web工程师从而不需要破解内部结构,而能够直接在后台运行额外的任务,充分利用多核结构。虽然名字中带有云的概念,但是Cloud9还可以默认在本地安装和运行,并且可以访问本地文件系统。它在后端使用JavaScript编写的Node.js文件来通过socket进行通信。Node.js将文件内容封装成jsdav库所支持的WebDAV格式。
  • [赋能学习] FusionInsight Kafka节点退服后未完全同步分区迁移方案
    一、          收集Kafka实例和分区信息1.       执行kafka-broker-info.sh --zookeeper zk业务IP:24002/kafka 命令获取Kafka实例信息2.       执行kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka --unavailable-partitions 命令获取Kafka未同步分区3.       对比Replicas和ISR列表中的信息,确定哪些节点的分区未同步,确定未同步的节点正常与否。例如,如下案例中,对比Replicas和ISR列表中的信息发现3节点没有同步,而正常的kafka实例中没有3。                      二、          准备迁移方案根据步骤一中的未完全同步的分区即需要迁移的分区,把需要迁移的所有分区写入一个新的json文件,文件中replicas中的信息需要根据步骤一中第2步查询结果中的Replicas把退服节点的brokerid改为正常节点的brokerid(即步骤一中第1步查询到的brokerid),其他不变,格式如下所示:{"version":1,"partitions":[{"topic":"test1","partition":0"replicas":[1,2]},{"topic":"test1","partition":1"replicas":[1,2]},{"topic":"test1","partition":5,"replicas":[2,1]},{"topic":"test1","partition":3,"replicas":[2,1]}]}如果涉及的分区比较多,也可按如下方式生成迁移的json文件。1.       根据步骤一中未完全同步的分区中的topic信息编写迁移topic的json文件,例如json文件名为generate.json,格式如下:{"topics":[{"topic": "test1"},{"topic": "test2"}], "version":1}2.       执行命令kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka --topics-to-move-json-file generate.json文件路径  --broker-list 1,2 --generate 生成迁移方案,其中,broker-list中对应参数是所有正常的broker实例的id,即步骤一中1获取的所有brokerid,不同brokerid间用逗号隔开。3.       把上一步得到的“Proposed partition reassignment configuration”的json文件写入迁移的json文件中,例如move.json,此json文件中只保留需要迁移的topic和partition的信息。如下图所示,红色方框内即迁移的json文件信息。三、          执行迁移执行kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka  --reassignment-json-file move.json文件路径 --execute 执行迁移四、          查看迁移进度执行kafka-reassign-partitions.sh --zookeeper zk业务IP:24002/kafka  --reassignment-json-file move.json文件路径 --verify 查看迁移进度,当所有partition都提示completed successfully时说明迁移完成。五、          查看是否所有分区都同步执行kafka-topics.sh --describe --zookeeper zk业务IP:24002/kafka --unavailable-partitions 命令获取Kafka未同步分区,如果结果为空,说明所有分区都同步,操作完成;如果有leader为-1,按步骤六执行。六、          Leader为-1的解决办法1.      Kafka配置中查看unclean.leader.election.enable配置,如果配置为true,只执行下面步骤2即可;如果配置为false,执行下面步骤3、4、5。2.      切controller:进zookeeper客户端,执行 zkCli.sh -server zk业务IP:24002/kafka进入zk,执行deleteall /controller 切controller。3.      Kafka客户端修改参数配置:kafka-topics.sh --alter --topic topicName --zookeeper zk业务IP:24002/kafka --config unclean.leader.election.enable=true,其中,topicName是leader为-1的topic。4.      按步骤2切controller。5.      查看leader为-1的分区leader是否正常,正常后在kafka客户端执行kafka-topics.sh --alter --topic topicName --zookeeper 100.112.22.233:24002/kafka --delete-config unclean.leader.election.enable。
  • 鸿蒙DevEco Studio内的js太难下载了
    鸿蒙DevEco Studio内的js太难下载了我手动下载node.js后又没有可以配置的地方,然后就一直卡在无法编译的地方,导致js的项目无法运行,这个怎么说呢,严重影响体验,无非就是一个js的运行环境,搞的这么复杂
  • [问题求助] OBS文件上传采用node.js的上传方式报错
    是不是esdk-obs-nodejs的npm包有问题?一直找不到这个JS:node_modules/log4js/lib/clustering.js,在文件夹里找了本地有这个,就是报错vue.runtime.esm.js?2b0e:1888 Error: No such module. (Possibly not yet loaded)    at Object.exports.binding (process.js?4362:17)    at Object.eval (worker.js?bcff:14)    at eval (worker.js:234)    at Object../node_modules/cluster/lib/worker.js (0.js:1023)    at __webpack_require__ (app.js:854)    at fn (app.js:151)    at Object.eval (master.js?bdb0:12)    at eval (master.js:918)    at Object../node_modules/cluster/lib/master.js (0.js:902)    at __webpack_require__ (app.js:854)
  • [技术干货] NodeJS笔记 模块详解-05
    # NodeJS笔记 模块详解-05 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/23/214404tgiwhqlfa9rzns8v.png) ## 1.分类 ### 核心模块 - 由node 引擎提供的模块 - 核心模块的标识是,模块的名字 ### 文件模块 - 由用户自己创建的模块 - 文件模块的标识就是文件的路径(绝对路径、相对路径) - 相对路径由 . , ..开头 ## 2.全局变量 **格式:** ```JavaScript //全局 变量名 = 值; ``` 在node中有一个全局对象global,它的作用和网页window类似。 ​ 在全局中创建的变量都会作为global的属性保存 ​ 在全局中创建的函数都会作为global的属性保存 在node在执行模块中的代码时,它会后弦在代码的最顶部,添加如下代码 ```js node在执行模块中的代码时,它会首先在代码的最顶部,添加如下代码 function (exports, require, module, __filename, __dirname) { 在代码的最底部,添加如下代码 } ``` 实际上模块中的代码都是包装在一个函数中执行的,并且在函数执行时,同时传递进了5个实参 exports - 该对象用来将变量或函数暴露到外部 require - 函数,用来引入外部的模块 module - module代表的是当前模块本身 - exports就是module的属性 - 既可以使用 exports 导出,也可以使用module.exports导出 __filename C:\Users\lilichao\WebstormProjects\class0705\01.node\04.module.js - 当前模块的完整路径 __dirname C:\Users\lilichao\WebstormProjects\class0705\01.node - 当前模块所在文件夹的完整路径 ​ ## 3.exports 和 module.exports区别 -通过exports只能使用.的方式向外暴露内部变量 ``` exports.xx = xxx ``` -而module.exports既可以通过.的形式,也可以直接赋值 ```js //方式一 module.exports.xx = xxx //方式二 module.exports = {} ```
  • [技术干货] NodeJS笔记 模块化简介-04
    # NodeJS笔记 模块化简介-04 ## 1.ECMAScript标准的缺陷 - **没有模块系统** - **标准库较少** - **没有标准接口** - **缺乏管理系统** ## 2.模块化 - 如果程序设计的规模达到一定程度,则能够将代码分割为多个源文件的机制。 - 模块化可以有多种形式,但至少应该提供能将代码分割为多个源文件的机制。 - CommonJS的模块功能可以帮我们解决该问题。 ## 3.CommonJS规范 - CommonJS规范的提出,主要是为了弥补当前JavaScript没有标准的缺陷 - CommonJS规范为JS指定了一个美好的愿景,希望JS能够在任何地方运行。 - CommonJS对模块的定义十分简单: - 模块引用 - 模块定义 - 模块标识 ## 4.引用模块 **格式**: ``` require("路径"); ``` 使用require()模块引入模块以后,该函数会返回一个函数,这个对象代表的是引入的模块。 **格式**: ``` var 变量名 = require("路径"); ``` ⚠️警告:模块不是全局作用域,所以一个模块中的变量和函数在其他模块中无法访问。 调用函数解决方案: - 通过exports向外部暴露变量和方法。 - 将需要暴露给外部的变量或方法设置为exports属性即可。 **格式:** ```JavaScript //暴露 变量 exports.变量名 = ""; //暴露 方法 exports.方法名 = function{ } ```
  • [技术干货] NodeJS笔记 Node.js简介-03
    # NodeJS笔记 Node.js简介-03 ## 1.Node.js 之父 **瑞安·达尔(Ryan Dahl)** - Ryan Dahl并非科班出身的开发者,在2004年的时候他还在纽约的罗斯特大学系读博士。 - 2006年,也是厌倦了读博的无聊,他产生了【世界这么大,我想去看看】的念头,做出退学的决定,然后一个人来到了智利的Valparaiso小镇。 - 从那时候开始,Ryan Dahl的生活暗示就是接项目,然后去客户的店工作,在他眼中,拿工资和上班其实就是去那里旅行。 - Ryan Dahl经过两年的工作后,成为高性能Web服务器的专家,从接开发应用到变成专门帮客户解决性能问题。 - 期间他开始写一些开源项目帮助客户解决Web服务器的高并发性能问题,他尝试了很多种语言,但是最终都失败了 - 在他快绝望的时候,V8引擎来了。V8满足他关于高性能Web服务器的想象。于是在2008年2月他开始着手编写Node.js 开发的最大瓶颈是I/O,原因:磁盘的读写速度 ## 2.Node.js 简介 Node.js是一个能够在服务器端运行JavaScript的开源代码、跨平台javaScript运行环境。 - Node采用Google开发的V8擎运行代码,使用事件驱动、非阻塞和异步I/O模型等技术来提高性能,可优化应用程序的传输量和规模。 - Node大部分基本模块都用JavaScript编写。在Node出现之前JS通常作为客户端程序设计语言使用,以JS写出的程序常在用户的浏览器上运行。 - 目前,Node民被IBM、Microsoft.Yahoo!、Walmart、Groupon. SAP、Linkedin、Rakuten、PayPal、Voxer和GoDaddy等企业采用。 ## 3.Node的历史 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/21/124208v0zle9aouzythwyk.png) ## 4.Node执行js文件 **格式:** 首先要进入有执行文件的文件夹 ```node node 文件名.js ``` ``` node 输入文件名 ```
  • [技术干货] NodeJS笔记 进程和线程-02
    # NodeJS笔记 进程和线程-02 ## 1. 进程 ### **打开进程的方式** 鼠标右键——任务管理器——进程 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/21/123910ygfui6umwqe7iyg7.png) ### 作用: - 负责为程序运行提供必备的环境 - 进程就相当于工厂中的车间 ## 2.线程 > 线程是计算机中最小的计算单位 **作用:** - 线程负责执行进程中的程序 - 线程中相当于工厂中的工人 **分类:** - 单线程 例:js - 多线程 主流的程序一般都是多线程,例如java等 ——多线程并不一定绝对比单线程好,例如:我的任务是吃一碗米饭,结果拍了100个人来吃,这效率并不会比一个人高。
  • [技术干货] NodeJS笔记 命令行窗口-01
    # NodeJS笔记 命令行窗口-01 ## 1.打开命令行窗口 **方式一:** ``` - 开始菜单--> 点击命令提示符 ``` ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194833rpzljceqeymrydsl.png) **方式二:** ``` window键+R --> CMD -->回车 ``` ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194857zzpqcsrbf4b7k4f5.png) **方式三:** ``` - 开始菜单--> 运行 --> CMD --> 回车 ``` ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194912uyxd3rzhf5ziodcl.png) **命令行窗口** > 其他名字 > > CMD窗口、终端、shell、小黑屏 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194923cxbwgr6t4gqysx2v.png) ## 2.常用指令 **路径:** ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194934nghc92l9iygnbkqx.png) ### dir(查看当前目录文件) **格式:** ``` dir ``` **作用:** ``` 列出当前目录下所有文件 ``` ### cd(进入目录) **格式:** ``` cd 目录名称 ``` **作用:** ``` 进入指定目录 ``` **特殊目录:** -目录 ​ · 表示当前目录 ​ ·· 表示上一级目录 **例** ``` --进入上级文件夹 cd ·· ``` ### md(创建文件夹) **格式:** ``` md 目录名 ``` **作用:** ``` 创建文件夹 ``` ### rd(删除一个文件夹) **格式:** ``` rd 目录名 ``` **作用:** ``` 删除一个文件夹 ``` ### **打开文件** **格式:** ``` 文件名 ``` **作用:** ``` 打开文件 ``` ### 环境变量(Windows系统中变量) > 当我们用命令窗口打开一个问阿金,或调用一个程序时,系统会首先在当前下寻找文件程序,如果找到了则直接打开 > > 如果没有找到则会一次到环境变量path的路径中寻找,直到找到为止 > > 如果没找到则报错 > > 所以一般情况下将经常访问的程序和文件的路径添加到path中,这样就可以在任意为止来访问这些文件和程序了。 **设置环境变量** ——右键我的电脑(计算机),选中属性 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/194954i1l42r8axtip9mwz.png) ——点击高级系统设置 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/195003lecs80lzaddk8nej.png) ——点击环境变量 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/195012l7jsamsu0qaz12q9.png) 用户变量和系统变量的区别 用户变量:当前用户的变量,只能当前用户使用。 系统变量:所有用户都可以使用。 ![image.png](https://bbs-img-cbc-cn.obs.cn-north-1.myhuaweicloud.com/data/attachment/forum/202008/19/195024p8xwqpiqryke8rys.png)
  • 【圈粉贴】Node.js是新手坟场?是时候展现真正的力量了!
    “Node 开发者容易面临的前三大困惑分别是异步编程、事件驱动以及 Debug。同时,文档是大家最期待的资源,新人对视频教程和免费在线课程的呼声最高。”这份《2020 年 Node.js 开发者调查报告》给出的信息,也正的疑惑。如何学习和进阶Node.js?如何让自己写的代码顺滑无bug?如何才能找到易用和高可用的平台呢?今天我来提点自己的拙见,看完觉得有用的老铁希望点个关注么么哒。是当下很多开发者心中JavaScript相信大家都不陌生,尤其是对于前端工程师而言,更是必备技能。传统意义上的 JavaScript 是运行在浏览器上的脚本语言。而Node.js 是一个运行在服务端的框架,它的底层使用了 V8 引擎。我们知道 Apache + PHP 以及 Java 的 Servlet 都可以用来开发**页,Node.js 的作用与他们类似,只不过是使用 JavaScript 来开发。他提供了底层服务器功能环境,包括二进制数据操作、文件系统 I/O、数据库访问、网络访问等。它独一无二的特性使其在现存的多种成熟服务器语言中脱颖而出。 同样声名鹊起的还有华为云。近年来,华为云已经成为市场上的一股不容小觑的力量。尤其是前段时间,华为云鲲鹏生态裹挟着铺天盖地的宣传横空出现,对其的评论的风向也是花样繁多,那么华为云鲲鹏弹性云服务器的表现究竟如何呢?本文将会带大家亲自感受一下在华为云鲲鹏弹性云服务器的 CentOS 系统上安装、部署、测试 Node.js 项目,以及其高可用性的探索。话不多说,我们走起。Node.js部署环境配置全流程首先,输入以下命令”LANG=en_us.UTF-8 ssh root@EIP“登陆华为云,需要使用华为云服务器 ECS 的公网 IP 替换命令中的 EIP一般本地服务器时可以直接获取公网IP,那么在华为云鲲鹏弹性云服务器,如何获取公网 IP 呢?而在云服务器中,弹性公网 IP 地址则可以通过点击“控制台”->“服务列表”->“计算”->“弹性云服务器 ECS”进入服务器列表,进行查看并复制。  在登陆时需要注意的是,输入密码的时候终端是不会有展示的,所以一定要确保密码是正确的。登陆成功后显示的界面如下。 然后就可以下载 node.js 安装包了,执行下载命令 解压文件 为 node 和 npm 建立软连接,建立完软连接后可以直接查看 node 和 npm 的版本,出现下图即表示安装成功。使用代码如下:ln -s /root/node-v10.16.0-linux-arm64/bin/node /usr/local/bin/nodeln -s /root/node-v10.16.0-linux-arm64/bin/npm /usr/local/bin/npm 其实到这里Node.js服务器环境就已经部署完毕了,可以直接运行项目代码 。但如果服务器上运行多个项目时,如果只安装一个全局的node.js版本,则在升级时可能会遇到很多问题。所以我们需要使用 nvm 版本管理器安装 node.js 多版本,这并不是一个必须的步骤,但是依然值得尝试。首先,下载 NVM 版本管理器,并在终端中输入以下命令git clone https://codehub.devcloud.cn-north-4.huaweicloud.com/Demo01087/nvm.git ~/.nvm && cd ~/.nvm 然后激活 NVM 版本管理器,并将其追加到 profile 文件下echo ". ~/.nvm/nvm.sh" >> /etc/profile NVM修改完毕后,就可以安装不同版本的node了,例如下图安装12.3.0的node包 node安装完毕后,就可以在服务器上运行脚本了。为了简化流程,我选择运行一个简单的脚本,利用node起一个服务器,部署在3000端口上。 服务器启动后,要想外网能够访问还需要再控制台配置下安全组规则。到这里node.js的部署环境配置实测就已经结束了。来展示一下我的成品。 这次比较不按套路出牌,没有“hello world”从前端语言到运维实践在此次实践中,我们可以简单点评一下大鲲鹏带给我的直观的感知。首先,它对于新用户的友好度是很高的,以Node.js的部署环境配置来看,云端实验室中的鲲鹏实验中配置了相关的实验和ABC级别的指导教程,用户可以根据指导一步步实现环境配置,即便是小白程序员也能轻松上手;代码一键复制的功能对于并不熟悉linux命令的开发者而言也算是细致入微了。随着竞争的加速,对于前后端的程序员都需要了解一些运维部署的知识,鲲鹏学院则提供了这样一个方便大家学习的平台。在这上面你能方便的获得小白开发者、鲲鹏开发者的相关课程,并且在完成了各类课程的学习之后,可以通过各类微认证和职业认证,来检验自身的学习成果,并且还能通过官方认证还能获取就业优先推荐机会,实用性这里必须加粗标红。对于企业来说,把网站部署在云端能够减少大量的运维负担,充分利用华为云的基础生态和平台能力,可以减少建站部署的复杂程度,解放程序员双手,让大家不用秃头改代码收获幸福人生;降低程序员和产品经理的掐架频率。随着网站用户访问量增大,系统服务很容易挂掉。例如微博突发热搜,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。因此,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。基于ELB和AS服务的高可用性解析随着网站用户访问量增大,系统服务很容易挂掉。例如微博热门事件,淘宝的双十一等关键节点正是考验我们服务器能力的时候。很多大公司都会自研弹性负载均衡系统,但是管理两台机器的复杂程度不是管理一台机器的两倍,甚至是8倍、10倍。这其中需要考虑防火墙、抗DDoS攻击、监控报警、日志打点、数据同步等一系列问题,其实是一个很复杂的事情。所以,对于更多的企业站点使用云服务厂商提供的弹性负载均衡系统会更加的简单便捷,节省成本。 首先了解什么是高可用性,高可用性是系统一种特征或者指标,通常是指提供一定性能上的服务运行时间,高于平均正常时间段。反之,则消除系统服务不可用的时间。衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。 举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如一些金融和电商网站都会对这些指标有严格的要求。 弹性伸缩服务能够在秒杀、抢购等流量激增的情况下能够确保服务器能够动态扩容,满足客户的良好体验。比如下单服务,当流量如潮水般涌过来的时候,ELB会根据算法动态的分配服务器资源,同时结合AS服务动态扩容服务器资源。 负载均衡是分布式系统架构设计中必须考虑的因素之一。一般通过负载均衡,解决分布式系统的大流量、高并发和高可用的问题。 那么在华为云鲲鹏弹性云服务器中,是如何保持高可用性的呢?其大体流程如下图所示:1.      流量调度。ELB通过监听器检查连接请求,跟进调度算法定义的转发策略将请求流量分发至后端服务器,起到了交通指挥官的作用,但是他更加的智能。2.      健康检查。判断后端服务器的业务可用性,确保将请求发送到健康的的ECS上。如果发现服务有问题也会进行及时摘除。3.      会话保持。将一段时间内来自同一用户的请求转发到相同的后端服务器,保障用户访问的连续性。4.      弹性伸缩。可以根据访问量自动扩展,保障业务灵活可用。例如上图中提到的利用定时/周期策略触发伸缩,当cpu/内存/入网流量等监控指标达到警告阀门也会触发伸缩。 搭产业顺风车,走开发快速道开发产业的一个典型特征就是活到老、学到老,五年前的JavaScript和现在相比堪称天壤之别。研读Node.js 使用报告,发现 Node.js 的使用有许多的成长,而且,五年前的浏览器环境和现在的Node环境全然不同。在云时代,越来越多的语言创造了更多可能,也让开发变得更加便捷。就像此次测试中,基于JavaScript、Python、Java等解释型语言开发的应用程序,其与CPU架构并无相关,因此将这类应用程序移植到华为云鲲鹏弹性云服务器上之后,无需修改和重新编译,都可以按照与x86一致的方式部署和运行应用程序即可,对开发者的帮助是显而易见的。 语言的升级带来了便捷,也带来了一些新的趋势,越来越多企业将主体业务放到云端,越来越多的前端工程师关心并参与到后端和全栈的工作中去。开发需求升级,各类开发者社区也便跟着升级,而华为云鲲鹏社区便是一个这样的平台,其能够提供的技术能力不仅能够解决企业业务需求,还能快速赋能开发者,实现快速成长。开发者能方便的找到适合自己能力的相关开发课程来进行学习,学会使用这些更加高效的产品,让自己的价值不断上升,避免出现网传“35岁被扼颈”的窘迫局面。更为可观的是,前端工程师远非云计算浪潮中最大的受益者。合理使用云服务器带来的ELB、AS等能力,能够让运维工程师从繁杂的工作中解脱出来,专注于系统的优化。目前,包括华为云在内的很多云服务能够提供大量的基础功能和运维工具,这些能力能够让自己脱离机械式编程工作,而是在不断的探索中发现更多高效、实用的工具,基于新的技术环境上实现适配性升级,避免频繁的重复造轮子,而是搭乘软件行业的顺风车,走上真正的开发快速道。(图片来源网络,侵删)
  • [技术干货] 【微码开发】微码开发入门 - 环境搭建
    搭建环境1. 安装 Node.js前言: We码的整个开发依赖 Node.js 环境,我们需要对 Node.js 做一个简单的了解。Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,类似Java的JRE,JRE有一个称为Java Virtual Machine(JVM)的虚拟机,Nodejs 的虚拟机就是V8,来自 Google 的开源 JavaScript 引擎。所以我们不应该把 Node.js 看成是一门语言,它是一个运行时环境,JavaScript才是运行和编译在它上面的语言。到 Node.js官网 下载安装包,Windows和macOS 的安装包为可执行安装文件,直接下载安装,安装完成后在命令提示符或者终端输入 node -v ,能正确输出版本号,则说明安装成功。Linux的安装包为二进制文件,下载下来后解压,解压出来的bin目录下有三个可执行文件(node, npm, npx),直接进入该目录执行 ./node -v 能正确输出版本号则证明包没有问题,接下来需要将node命令变为全局可执行,简单的做法可使用 ln -s 命令将node和npm添加软链到系统PATH目录(关于Linux下ln命令的使用请自行上网搜索)。2. 设置npm源npm是Node.js默认的包管理工具(在安装Node.js的时候默认安装),我们可以通过它来安装和管理Node.js各种强大的包。npm默认的源地址在国外,如遇到访问较慢的情况,请使用华为镜像仓库:npm config set registry https://mirrors.huaweicloud.com/repository/npm/npm cache clean -f3. 安裝开发工具开发工具需要使用VSCode,下载并安装开发工具VSCode(全称 Visual Studio Code):下载需以管理员权限安装VSCode,否则在项目初始化时会提示 WECODE TOOLS 无权限配置开发环境。4. 创建微码应用  按照 CloudLink官方开发文档 - 创建应用(https://open.welink.huaweicloud.com/wecode/docs/dev/prod/quickstart/vscode_cloud/register.html?v=1547690385) 来创建微码应用。5. 安装开发插件1、下载开发插件 WECODE_TOOLS: https://open.welink.huaweicloud.com/wecode/docs/dev/prod/quickstart/file/wecode_tools.zipWECODE_TOOLS 是为开发者提供的We码开发插件,便于开发者能在熟悉的开发环境(VSCode)下开发We码。插件提供了完善的项目自动化配置功能,如:自动安装依赖、构建并启动项目、手机调试、上传开发包等。2、解压下载到的 wecode_tools.zip 文件,得到一个.vsix格式的文件。3、按下图步骤完成 WECODE_TOOLS 的安装。4、安装成功后,打开We码项目即可看到 WECODE_TOOLS 目录。    5、配置插件点击插件的“设置”按钮,配置 "domain":"open.welink.huaweicloud.com"6. 安装Chrome浏览器Chrome浏览器可以非常方便的模拟手机端调试,因此推荐使用Chrome浏览器进行开发调试。说到这里,环境基本上已经搭建完成了,有几点需要注意:如果Node.js未能正确安装,初始化的时候会报错,请重新安装Node.js;npm源地址有问题则会卡在安装项目依赖那里,请使用华为镜像源地址试试;安装完WECODE_TOOLS后,如果没有打开标准的We码模板,则不会显示WECODE_ TOOLS工具菜单,请联系应用负责人创建We码应用,然后下载模板。
  • [Node.js] 镜像过旧
    截止 2019-02-13,Node.js 官方发布的最新版本如下:Current: 11.9.0LTS: 10.15.1华为 Node.js 镜像最新版本如下 (主页显示最后更新于 2018-05-02 01:35:01):Current: 10.9.0LTS: 8.11.4可能的解决方案:订阅下列 URL 之一,每隔一段时间拉取内容,发现更新时,触发同步。https://nodejs.org/en/feed/releases.xmlhttps://github.com/nodejs/node/releases.atomhttps://nodejs.org/dist/index.json https://nodejs.org/dist/index.tab参考资料:Notification of new releaseshttps://github.com/nodejs/help/issues/86Release Feedhttps://github.com/nodejs/build/issues/608
  • [技术干货] node.js调试北向接口【转】
    (转自https://developer.huawei.com/ict/forum/thread-26457.html  感谢@andy2017的分享)通过Node.js的request模块来调用北向接口。request的详细介绍可以参见:https://www.npmjs.com/package/request下面为调用鉴权接口的代码:var fs = require('fs')   , path = require('path')   , certFile = path.resolve(__dirname, 'ssl/client.crt')   , keyFile = path.resolve(__dirname, 'ssl/client.key')   , request = require('request');var options = {   url: 'https://XXX.XXX.XXX.XXX:8743/iocm/app/sec/v1.1.0/login',   method: 'POST',   agentOptions: {       cert: fs.readFileSync(certFile),       key: fs.readFileSync(keyFile)   },   headers: [       {         name: 'content-type',         value: 'application/x-www-form-urlencoded'       }   ],   form :   {    'appId':'XXXX',    'secret': 'XXXX'   },   strictSSL: false};request(options,function(error,response,body){if (!error && response.statusCode == 200) {console.log(body);   }});其中使用的证书及公钥可以参加这篇帖子的附件获取。https://bbs.huaweicloud.com/forum/thread-13234-1-1.html 
  • npm工具安装配置教程
    本帖最后由 华为开源镜像站 于 2018-1-25 17:30 编辑一、什么是npm?npm的全称是node package manager,是随同Node.js一起安装的包管理工具。npm是世界上最大的软件依赖包库,每星期大约有30亿的下载次数,包含超过600,000个包(代码的构建块)。来自全世界的开源开发者通过npm共享这些依赖包,它们遵循特定的结构,使你能够跟踪、管理版本和多个依赖项。 二、常见的使用场景有哪些?1.允许用户从npm服务器下载其他开发者编写的第三方包2.允许用户从npm服务器下载并安装其他开发者编写的命令行程序3.允许用户将自己编写的包或命令行程序上传到npm服务器 三、如何查找包?https://www.npmjs.com/ 搜索框中查找,你可以找到1.用于服务器端的Node模块2.用于命令行中添加命令的依赖包3.用于网站前端的依赖包 四、如何安装npm?npm由Node.js编写,所以为了使用npm需要先安装Node.js。安装文件下载地址:https://nodejs.org/en/download/建议下载标记LTS的版本,其他版本可能没有经过测试验证。安装后运行node -v查看Node.js版本。npm会随Node.js自动安装。npm更新的频率比Node.js更频繁,确保你安装的是最新版本。运行 npm -v 查看npm版本。运行 npm install npm@latest -g 下载最新官网测试过的版本。 五、registry配置设置地址为华为开发云npm镜像npm config set registry https://mirrors.huaweicloud.com/repository/npm/
总条数:33 到第
上滑加载中