YML

基于 Travis CI + PM2 实现 NodeJS 应用的持续集成和部署

天涯浪子 提交于 2020-08-16 01:35:57
前言 我发现一旦手头的项目变多,且随着项目复杂度的提升,本来编码就已经是个够头痛的问题,再加上部署到生产环境就更心累了 😵。 之前在公司实习时,有一个 依据用户输入网址进行截屏 的项目,同时包含了 React 应用和 Node 应用。 部署 React 应用比较方便,只要通过 scp 将 build 后的 dist 目录放置在服务器上。 而 Node 应用则较为复杂: 由于它使用 TS 编写,同样需要将 build 后 dist 目录放置在服务器上 在根目录下新建目录并使用 chmod 修改权限,用于暂时放置截屏快照 更新 npm 包 重启 PM2(Node 进程管理工具) 在项目初期,版本迭代非常快,我每天都要反复执行以上步骤数次,waste time! 何况,在标准的开发流程中,我们还需引入 单元测试 、 覆盖率报告 、 代码风格检测 ……,并将应用部署到 不同环境的服务器 (开发、测试、生产)中,这无疑是一项繁琐的工作,本着 不想当运维的前端不是一个好全栈 的核心思想,我迫切需要解放我的双手。 TIP:结尾有源码链接 CI & CD 所谓前人栽树,后人乘凉,我的诉求早就在开发领域中被定义为两个专有名词: 持续集成(Continuous Integration),简称 CI 持续部署(Continuous Deployment),简称 CD 听起来很高大上

SpringBoot集成Redis实现缓存处理(Spring AOP实现)

好久不见. 提交于 2020-08-16 00:26:00
第一章 需求分析 计划在Team的开源项目里加入Redis实现缓存处理,因为业务功能已经实现了一部分,通过写Redis工具类,然后引用,改动量较大,而且不可以实现解耦合,所以想到了Spring框架的AOP(面向切面编程)。 开源项目: https://github.com/u014427391/jeeplatform 欢迎star(收藏) 第二章 SpringBoot简介 Spring框架作为JavaEE框架领域的一款重要的开源框架,在企业应用开发中有着很重要的作用,同时Spring框架及其子框架很多,所以知识量很广。 SpringBoot:一款Spring框架的子框架,也可以叫微框架,是2014年推出的一款使Spring框架开发变得容易的框架。学过Spring框架的都知识,Spring框架难以避免地需要配置不少XMl,而使用SpringBoot框架的话,就可以使用注解开发,极大地简化基于Spring框架的开发。SpringBoot充分利用了JavaConfig的配置模式以及“约定优于配置”的理念,能够极大的简化基于SpringMVC的Web应用和REST服务开发。 第三章 Redis简介 3.1 Redis安装部署(Linux) Redis安装部署的可以参考我的博客(Redis是基于C编写的,所以安装前先安装gcc编译器): http://blog.csdn.net

dgraph 使用简介

只愿长相守 提交于 2020-08-15 16:51:59
dgraph 简介 dgraph 使用示例(基于 golang) golang client 安装 创建 schema 数据的 CURD 事务 总结 dgraph 简介 dgraph 是基于 golang 开发的开源的分布式图数据库. 诞生时间不长, 发展却很迅速. 目前是 v20.x 版本, dgraph 集群主要包含 3 种节点: Zero: 是集群的核心, 负责调度集群服务器和平衡服务器组之间的数据 Alpha: 保存数据的 谓词 和 索引 . 谓词包括数据的 属性 和数据之间的 关系 ; 索引是为了更快的进行数据的过滤和查找 Ratel: dgraph 的 UI 接口, 可以在此界面上进行数据的 CURD, 也可以修改数据的 schema 通过增加 Alpha 的数量完成 dgraph 的水平扩展. dgraph 是 golang 开发的, 所以部署非常简单, 更简单的方式是使用 docker docker pull dgraph/dgraph:latest 然后配置一个 docker-comopse.yml, 一键启动 dgraph 服务: version: "3.2" services: zero: image: dgraph/dgraph:latest volumes: - type: volume source: dgraph target: /dgraph

Spring 数据库接口多实现类,根据数据库类型自动匹配对应的实体

扶醉桌前 提交于 2020-08-15 14:39:04
背景 常用的数据库有mysql,oracle,sql server还有非关系型数据库Redis等,如果希望一套框架能在不同的数据库平台上都能正常运行,而且希望不用做多大的改动. 设计思路 可以将数据库操作抽象成接口,又具体的实现类去完成数据库操作,对用不同的数据库调用不同的实现类,为了兼容mybatis框架,我的设计如下。在传统的框架基础上多加一层daoService,只用于对数据库操作。 后面实现需要知道的知识 1 Autowired注解:最常用的注解之一,该注解根据type注入,如果一个类有多个实现时,将报错; 2 Qualifier注解:与Autowired配合使用,当出现多个实现时,使用该注解指定具体实现类, 指定的实现类的BeanDifition的AutowireCandidate必须为true,否则会报错,找不到实现类,当然该属性默认是true,只是在我们这个系统中,将改变这个属性 2-1 在实际使用时,发现这样会有bug,列:如果db_type=mysql ,@Qualifier("xmlUserService")时,由于指定的实例不存在,系统启动时就会报错,对拦截器重新修改为设置Primary属性,当系统中用户没有指定时,我们就将与db_type相等的实现类的Primary设为 3 Primary注解:当有多个实现时,标记有该注解的实现类为主要类

Java规则引擎 Easy Rules

大城市里の小女人 提交于 2020-08-15 14:20:30
1. Easy Rules 概述 Easy Rules是一个Java规则引擎,灵感来自一篇名为《 Should I use a Rules Engine? 》的文章 规则引擎就是提供一种可选的计算模型。与通常的命令式模型(由带有条件和循环的命令依次组成)不同,规则引擎基于生产规则系统。这是一组生产规则,每条规则都有一个条件(condition)和一个动作(action)———— 简单地说,可以将其看作是一组if-then语句。 精妙之处在于规则可以按任何顺序编写,引擎会决定何时使用对顺序有意义的任何方式来计算它们。考虑它的一个好方法是系统运行所有规则,选择条件成立的规则,然后执行相应的操作。这样做的好处是,很多问题都很自然地符合这个模型: if car.owner.hasCellPhone then premium += 100 ; if car.model.theftRating > 4 then premium += 200 ; if car.owner.livesInDodgyArea && car.model.theftRating > 2 then premium += 300; 规则引擎是一种工具,它使得这种计算模型编程变得更容易。它可能是一个完整的开发环境,或者一个可以在传统平台上工作的框架。生产规则计算模型最适合仅解决一部分计算问题

springboot 注册到nacos

走远了吗. 提交于 2020-08-15 10:34:17
springboot 版本 2.0.8.RELEASE <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-dependencies</artifactId> <version>2.0.8.RELEASE</version> <type>pom</type> <scope>import</scope> </dependency> 参考文章: https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html 是使用Nacos Spring Cloud方式配置的,为什么是不使用springboot ,因为springboot加代码,自己手动注册。 服务端用的是1.1.4,因为1.2.0要用户认证 1、配置 1.1添加依赖包 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>0.2.1.RELEASE</version> </dependency> 1.2添加文件bootstrap.properties,内容

Spring Boot系列之读取配置

 ̄綄美尐妖づ 提交于 2020-08-15 08:23:37
使用SpringBoot框架开发,读取配置是少不了的,那么你会读取配置吗?你会写配置吗?List?Map? 1 目的 本节我们要解决如下几个问题: 如何使用Spring Boot读取配置文件?有哪些方式? 常用的几种数据结构,如字符串、整数、List、Map,如何配置?如何读取? 如何自定义配置文件的路径? 2 读配置文件 <br />Spring Boot默认的配置文件有两种格式: application.properties 和 application.yml 。 查找顺序是首先从 application.properties 查找,如果找不到,再查找 application.yml 。<br /> <br />优先级: application.properties > application.yml 。 2.1 使用 @Value 读取配置 配置如下: erwin.name=冯文议 erwin.age=20 erwin.sex=男 erwin.english-name=Erwin Feng erwin.birthday=1992/02/26 erwin.like=movie,game,music,tea,travel erwin.visitedCities=巴中,揭阳,广州,从化,成都,三亚,上海,杭州,北京 erwin.moreOther={myWeb:'https:/

从零搭建Prometheus监控报警系统

眉间皱痕 提交于 2020-08-15 08:10:11
参考文章: 从零搭建Prometheus监控报警系统 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 2016年由Google发起Linux基金会旗下的原生云基金会(Cloud Native Computing Foundation), 将Prometheus纳入其下第二大开源项目。 Prometheus目前在开源社区相当活跃。 Prometheus和Heapster(Heapster是K8S的一个子项目,用于获取集群的性能数据。)相比功能更完善、更全面。Prometheus性能也足够支撑上万台规模的集群。 Prometheus的特点 多维度数据模型。 灵活的查询语言。 不依赖分布式存储,单个服务器节点是自主的。 通过基于HTTP的pull方式采集时序数据。 可以通过中间网关进行时序列数据推送。 通过服务发现或者静态配置来发现目标服务对象。 支持多种多样的图表和界面展示,比如Grafana等。 官网地址: https://prometheus.io/ 架构图 基本原理 Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态,任意组件只要提供对应的HTTP接口就可以接入监控

SpringBoot源码分析 + 自定义Starter

爷,独闯天下 提交于 2020-08-15 07:38:57
SpringBoot源码分析 + 自定义Starter 注:这里我先讲源码~其实讲完源码,你就懂了为什么可以自定义Starter 源码分析 @SpringBootApplication注解------->组合注解 由以下注解组成: 其中@Targer 、@Retention、@Document、@Inherited四个注解为元注解 @Inherited :父类有标注这个注解,那么子类不需要明确写出来就相当于标注了这个注解。相当于继承。 @SpringBootConfiguration :也是一个组合注解。从源码里可以看到他是由三个元注解+@Configuration组成的一个组合注解。所以其实 它和@Configuration是一个意思,是springboot自己的注解配置 @ComponentScan :扫描~没有指定的情况下,从当前类所在包的开始扫描,也就是扫描当前包及子孙包。如果包太多,可以通过下面两个方法来指定包括或者忽略哪些包,过滤器的作用。 //包括 Filter [ ] includeFilters ( ) default { } ; //忽略 Filter [ ] excludeFilters ( ) default { } ; 重点 :ComponentScan它不做配置扫描的工作,具体的配置扫描由@EnableAutoConfiguration来做。

Filebeat收集日志的那些事儿

青春壹個敷衍的年華 提交于 2020-08-15 07:32:04
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 【编者的话】最近因为云原生日志收集的需要,我们打算使用Filebeat作为容器日志收集工具,并对其进行二次开发,因此笔者将谈谈Filebeat收集日志的那些事儿。本文不涉及过具体的源码分析,希望通过阅读您可以了解Filebeat的基本使用方法和原理,姑且算是Filebeat的入门吧。 前言 开源日志收集组件众多,之所以选择Filebeat,主要基于以下几点: 功能上能满足我们的需求:收集磁盘日志文件,发送到Kafka集群;支持多行收集和自定义字段等; 性能上相比运行于JVM上的Logstash和Flume优势明显; Filebeat基于Golang 技术栈,二次开发对于我们来说有一定的技术积累; 部署方便,没有第三方依赖。 Filebeat能做什么 简单来说Filebeat就是数据的搬运工,只不过除了搬运还可以对数据作一些深加工,为业务增加一些附加值。 Filebeat可以从多种不同的上游input中接受需要收集的数据,其中我们最常用的就是log input,即从日志中收集数据; Filebeat对收集来的数据进行加工,比如:多行合并,增加业务自定义字段,json等格式的encode; Filebeat将加工好的数据发送到被称为output的下游