husky

微服务技术栈:常见注册中心组件,对比分析

偶尔善良 提交于 2020-08-08 09:41:27
本文源码: GitHub·点这里 || GitEE·点这里 一、注册中心简介 1、基础概念 在分布式架构的系统中注册中心这个概念就已经被提出了,最经典的就是Zookeeper中间件。 微服务架构中,注册中心是最核心的基础服务之一,注册中心可以看做是微服务架构中的通信中心,当一个服务去请求另一个服务时,通过注册中心可以获取该服务的状态,地址等核心信息。 服务注册主要关系到三大角色:服务提供者、服务消费者、注册中心。 2、流程和原理 基础流程 服务启动时,将自身的网络地址等信息注册到注册中心,注册中心记录服务注册数据。 服务消费者从注册中心获取服务提供者的地址,并通过地址和基于特定的方式调用服务提供者的接口。 各个服务与注册中心使用一定机制通信。如果注册中心与服务长时间无法通信,就会注销该实例,这也称为服务下线,当服务重新连接之后,会基于一定的策略在线上线。 服务地址相关信息发生变化时,会重新注册到注册中心。这样,服务消费者就无需手工维护提供者的相关配置。 核心功能 通过上面的基本流程,不难发现一个注册中心需要具备哪些核心功能: 服务发现 服务发现是指服务在启动后,注册到注册中心,服务方提供自身的元数据,比如IP地址、端口、运行状况指标的Uri 、主页地址等信息。 服务记录 记录注册中心的服务的信息,例如服务名称、IP地址、端口等。服务消费方基于查询获取可用的服务实例列表。

微服务技术栈:流量整形算法,服务熔断与降级

感情迁移 提交于 2020-07-28 15:54:37
本文源码: GitHub·点这里 || GitEE·点这里 一、流量控制 1、基本概念 流量控制的核心作用是限制流出某一网络的某一连接的流量与突发,使这类报文以比较均匀的速度流动发送,达到保护系统相对稳定的目的。通常是将请求放入缓冲区或队列内,然后基于特定策略处理请求,匀速或者批量处理,该过程也称流量整形。 流量控制的核心算法有以下两种:漏桶算法和令牌桶算法。 2、漏桶算法 基础描述 漏桶算法是流量整形或速率限制时经常使用的一种算法,它的主要目的是控制数据注入到网络的速率,平滑网络上的突发流量。漏桶算法提供了一种机制,通过它,突发流量可以被整形以便为网络提供一个稳定的流量。 漏桶算法基本思路:请求(水流)先进入到容器(漏桶)里,漏桶以一定的速度出水,这里就是指流量流出的策略,当流量流入速度过大容器无法承接就会直接溢出,通过该过程限制数据的传输速率。 核心要素 通过上述流程,不难发现漏桶算法涉及下面几个要素: 容器容量 容器的大小直接决定能承接流量的多少,容器一但接近饱和,要么溢出,要么加快流速; 流出速度 流量流出的速度取决于服务的请求处理能力,接口支撑的并发越高,流速就可以越大; 时间控制 基于时间记录,判断流量流出速度,控制匀速模式, 注意:需要一个基本的判定策略,漏桶算法在系统能承接当前并发流量时,不需要启用。 3、令牌桶算法 基础描述

助教观察记录2(9/16-9/22)

℡╲_俬逩灬. 提交于 2020-04-24 18:07:45
一、助教工作完成情况 冉助教: 乐助教: 徐助教: **徐助教负责本周作业的发布。 ** 二、有价值的提问和回复(于我而言) #1 #2楼 [楼主] 2019-09-16 14:59 | MrHe&Husky @ ranh941谢谢指点,只是在实际刷题过程中,经常会遇到题目不会做,看参考代码又看不懂的情况,这时再回去翻阅资料又会花费大量时间,有没有什么方法能比较快并理解地攻克这个问题呢? #3楼 2019-09-17 08:52 | ranh941 @ MrHe&Husky看个人习惯吧。如果身边有会的同学,自然最好,厚着脸皮去问,别人讲自然比自己看资料容易理解的多。其次话,没有人可问话,我通常是一个Excel表记录自己花费的时间、起始时间、题目、尝试次数,word表记录思路,这次花费时间多(两小时以上),代码又看不明白我会搁置一边,做其他同类型难度较低的题目,然后再回过头,自己来解决这个问题。目前来看,通常都能 把自己之前折腾很久且看代码费劲的题解决。翻阅资料费时间这个问题吧,我个人认为这个时间是值得的,主观取决于每个人愿意投入多少时间和这个事价值多少~供参考。 **我的思考:**我通常看到这位同学的问题,会感觉到他的着急,安慰他不需要太着急。冉助教提出了自己实践过的办法。当然方法肯定要结合自身实际才能发挥效用。后续可观察这位同学是否掌握,或者自己总结出了方法。 #2 #3楼

规范化团队 git 提交信息

耗尽温柔 提交于 2020-03-03 14:09:06
同一个工程项目,为了方便管理,git 的 commit 信息最好按照一定的格式规范,以便在需要的时候方便使用。什么是方便的时候,比如出现了一个线上 bug,所以需要回滚操作,知道了提交信息可以方便的定位问题。代码 review 的时候也知道了该次 commit 干了什么,所以 commit 标准化好处很多,不再举例。 实现 可以马上想到的是利用 shell 结合 git hook 实现在 git commit 阶段检查输入是否符合规范。符合就通过,不符合就终止,并给出提示信息。 规范是什么 常见的分类有下面几种: build:修改项目的的构建系统(xcodebuild、webpack、glup等)的提交 ci:修改项目的持续集成流程(Kenkins、Travis等)的提交 chore:构建过程或辅助工具的变化 docs:文档提交(documents) feat:新增功能(feature) fix:修复 bug pref:性能、体验相关的提交 refactor:代码重构 revert:回滚某个更早的提交 style:不影响程序逻辑的代码修改、主要是样式方面的优化、修改 test:测试相关的开发 轮子 在 github 上有 commitlint 这个项目,它可以很方便的在工程中做配置,并允许你自定义上面说的「规范」、「分类」。 commitlint :用于检查提交信息 husky

GIT (HUSKY): exit code when a file is being committed?

假装没事ソ 提交于 2020-01-03 05:07:09
问题 is there a way to check if a file is being committed and exit with an error ? I have a file in git that needs to be there but should never be modified and i was hoping to use husky as a pre-commit - so if anybody tries to modify the file and commit then it would throw an error. If in future I need to modify the file then i can just disable the pre-commit. the file is a configuration that i need to edit a lot when developing but the changes should never be committed. I was hoping to use husky

mongodb(一)mongodb 副本集配置

给你一囗甜甜゛ 提交于 2019-12-01 21:26:05
环境 系统: centos7 软件: mongodb-linux-x86_64-rhel70-4.0.2.tgz 下载解压 tar -zxvf mongodb-linux-x86_64-rhel70-4.0.2.tgz -C /usr/local/mongodb cd /usr/local/mongodb 基本配置: 假定已经解压安装完成,现在所处的目录是 /usr/local mongodb 目录:/usr/local/ 配置步骤如下: 1)新建副本集文件夹: mkdir mongodb-replset 2)复制解压好的mongodb文件到mongodb-replset下: cp mongodb -r mongodb-replset/mongodb-1 cp mongodb -r mongodb-replset/mongodb-2 cp mongodb -r mongodb-replset/mongodb-3 3)创建data logs conf 目录(用于存数据、日志、配置文件) cd mongodb-replset/mongodb-1 mkdir data logs conf 注:2、3自行创建 4)修改配置文件 conf/mongo.conf vim mongodb-1/conf/mongodb.conf 配置文件如下: port=27017 #数据文件存放目录

How to lint for Typescript compilation issues?

风流意气都作罢 提交于 2019-11-30 09:12:32
问题 Take the following Typescript arrow function: /** * Returns a probably unique component name. * * @param baseName a suggested name to make unique. * @returns a probably unique name. */ export const getUniqueComponentName = ( baseName ): string => { return baseName + Math.round(Math.random() * 10000000) } When Typescript is configured in tsconfig.json as such: "noImplicitAny": true, This correctly results in a compilation error: [ts] Parameter 'baseName' implicitly has an 'any' type. Visual

How to lint for Typescript compilation issues?

吃可爱长大的小学妹 提交于 2019-11-29 13:37:24
Take the following Typescript arrow function: /** * Returns a probably unique component name. * * @param baseName a suggested name to make unique. * @returns a probably unique name. */ export const getUniqueComponentName = ( baseName ): string => { return baseName + Math.round(Math.random() * 10000000) } When Typescript is configured in tsconfig.json as such: "noImplicitAny": true, This correctly results in a compilation error: [ts] Parameter 'baseName' implicitly has an 'any' type. Visual Studio Code is also smart enough to inform you about this issue during development. My goal is to create

Husky giving error SyntaxError: Use of const in strict mode

只谈情不闲聊 提交于 2019-11-29 11:56:01
I am using Husky with Lint-staged and Stylelint "scripts": { "precommit": "lint-staged", }, "lint-staged": { "*.scss": ["stylelint --syntax scss" ] }, OS - Latest OSX Node - 6.10.0 NPM - 3.10.00 I'm getting this error on git commit > husky - npm run -s precommit /Users/jitendravyas/app/node_modules/lint-staged/src/index.js:6 const path = require('path') ^^^^^ SyntaxError: Use of const in strict mode. at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object.Module._extensions..js (module.js:478:10) at Module.load (module.js:355:32) at Function.Module._load

Husky giving error SyntaxError: Use of const in strict mode

假装没事ソ 提交于 2019-11-28 05:13:14
问题 I am using Husky with Lint-staged and Stylelint "scripts": { "precommit": "lint-staged", }, "lint-staged": { "*.scss": ["stylelint --syntax scss" ] }, OS - Latest OSX Node - 6.10.0 NPM - 3.10.00 I'm getting this error on git commit > husky - npm run -s precommit /Users/jitendravyas/app/node_modules/lint-staged/src/index.js:6 const path = require('path') ^^^^^ SyntaxError: Use of const in strict mode. at exports.runInThisContext (vm.js:73:16) at Module._compile (module.js:443:25) at Object