persist

使用FluentMigrator进行数据库迁移

纵然是瞬间 提交于 2020-04-27 02:27:06
介绍 在开发的过程中,经常会遇到数据库结构变动(表新增、删除,表列新增、修改、删除等)。开发环境、测试环境、正式环境都要记性同步;如果你使用 EF 有自动迁移的功能,还是挺方便的。如果非 EF 我们需要手工处理,有时候会忘记,繁琐。恰好 网上有提供的工具来实现类似 EF 的迁移功能。如: SQL Server Data Tools 、 Fluent Migrator 、 RoundhousE 、 DbUp 、 Conclusion ;本文将着重分享下如何使用 Fluent Migrator 进行数据库迁移。 Fluent Migrator Fluent Migrator 是 .NET 下的一个数据库迁移框架。我们可以利用 Migration 基类,编写数据结构改变,它有两个方法 Up() 和 Down() 。 up 方法用于升级迁移, down 用于回滚。 如何使用Fluent Migrator 下面以创建一个论坛,帖子表为例。 创建一个迁移类库,命名为DatabaseMigration,在命令行中安装: Install-Package FluentMigrator 然后添加一个迁移类 CreateTopicTable_201811091800.cs 继承 Migration,代码如下 [Migration( 201811091800 )] public class

使用scrapy-redis 搭建分布式爬虫环境

三世轮回 提交于 2020-04-26 08:29:34
 scrapy-redis 简介    scrapy-redis 是 scrapy 框架基于 redis 数据库的组件,用于 scraoy 项目的分布式开发和部署。   有如下特征:     分布式爬取:       你可以启动多个 spider 工程,相互之间共享单个的 requests 队列,最适合广泛的多个域名的内容的抓取。   分布式数据处理:     爬取到的 scrapy 的 item 数据可以推入到 redis 队列中,着意味着你可以根据需求启动尽可能多的处理程序来共享 item 队列,进行 item 数据持久化处理   scrapy 即插即用的组件:     Scheduler 调度器+ Duplication 复制 过滤器, Item Pipeline, 基本 spider scrapy-redis 架构 1、首先 Slave 端从 Master 端那任务 (Requests, Url ) 进行数据抓取,Slaver 抓取数据的同时,产生新任务 Request编提交给 Master 处理。 2、Master 端只有一个 Redis 数据库,负责处理的 Request 去重任务分配,将处理后的 Ruqest 加入待爬队列,并且存储爬取的数据,Scrapy-redis 默认使用的就是这种策略,我们实现起来很简单,因为任务调度等工作 Scrapy

(转载)用C#实现MySQL建库及建表

早过忘川 提交于 2020-04-25 13:54:16
最近做一个项目,为了方便用户使用,希望可以在系统初始化的时候,自动实现 MySQL 数据库 的建库和建表操作。在网上查了很多资料都没有找到合适的,偶尔在一个国外网站上看到了相关的内容,特把实现方法整理如下: 1、用C#实现MySQL建库 [csharp] view plain copy using System.Drawing; using System.Windows.Forms; using MySql.Data.MySqlClient; namespace MySqlDemo { /// <summary> /// 实现MySQL建库 /// </summary> public class Form1 : System.Windows.Forms.Form { void btnCreateDB( object sender, System.EventArgs e) { MySqlConnection conn = new MySqlConnection( "Data Source=localhost;Persist Security Info=yes;UserId=root; PWD=你的密码;" ); MySqlCommand cmd = new MySqlCommand( "CREATE DATABASE 你的数据库名;" , conn ); conn.Open();

spark面试题

时光总嘲笑我的痴心妄想 提交于 2020-04-23 03:04:08
1.Spark 消费Kafka,分布式的情况下,如何保证消息的顺序? Kafka分布式的单位是Partition,如何保证消息有序,需要分一下几个条件讨论。 同一个Partition用一个 write ahead log 组织,所以可以保证FIFO的顺序。 不同Partition之间不能保证顺序但是绝大多数用户可以通过 message key 来定义,因为同一个key的 message 可以保证只发送到同一个Partition。如果说key是user id, table row id 等等,所以同一个user 或者同一个 record 的消息永远只会发送到同一个 Partition 上,保证了同一个 user 或 record 的顺序。 当然,如果你有 key skewnes就有些麻烦,需要谨慎处理。 实际情况中,(1)不关注顺序的业务大量存在,队列无序不代表消息无序。(2)我们不保证队列的全局有序,但可以保证消息的局部有序,举个例子:保证来自同一个order id 的消息,是有序的。Kafka中发送1条消息的时候,可以指定(topic,partition,key) 3个参数。partition和key是可选的,如果你指partition,那就是所有消息发往同一个partition,就是有序的,而且在消费端,Kafka保证,1个partition只能被一个consumer消费

open***安装

好久不见. 提交于 2020-04-23 01:42:21
open***安装 一、服务端安装 1.安装open***server 配置yum源并安装open*** 防火墙关闭 yum upgrade yum install -y epel-release yum install -y install open*** easy-rsa net-tools bridge-utils 安装完成后查看版本 版本是2.4.8 cp /usr/share/doc/open***-2.4.8/sample/sample-config-files/server.conf /etc/open***/server/ 其中这条命令的open***-2.4.8就是这个版本号的 初始化初始化一个新的PKI 2.创建服务器端证书和key: PKI初始化,覆盖原来的生成新的pki cd /usr/share/easy-rsa/3 ./easyrsa init-pki 3.创建根证书 /usr/share/easy-rsa/3/pki警告这个目录已经有个了,不需要删除创建的时候会覆盖 创建证书申请 输入2次密码:123456 输入证书名称 3.创建服务器端证书 ./easyrsa build-server-full server1 nopass 输入刚刚创建的密码123456 4.创建客户端证书 ./easyrsa build-client-full client1

spark——详解rdd常用的转化和行动操作

…衆ロ難τιáo~ 提交于 2020-04-21 06:20:06
本文始发于个人公众号: TechFlow ,原创不易,求个关注 今天是 spark第三篇 文章,我们继续来看RDD的一些操作。 我们前文说道在spark当中RDD的操作可以分为两种,一种是 转化操作(transformation) ,另一种是 行动操作(action) 。在转化操作当中,spark不会为我们计算结果,而是会生成一个新的RDD节点,记录下这个操作。只有在行动操作执行的时候,spark才会从头开始计算整个计算。 而转化操作又可以进一步分为针对元素的转化操作以及针对集合的转化操作。 针对元素的转化操作 针对元素的转化操作非常常用,其中最常用的就是map和flatmap。从名字上看这两者都是map操作,map操作我们都知道,在之前的MapReduce文章以及Python map、reduce用法的文章当中都有提及。简而言之就是可以将一个操作映射在每一个元素上。 比如假设我们有一个序列[1, 3, 4, 7],我们希望将当中每一个元素执行平方操作。我们当然可以用for循环执行,但是在spark当中更好的办法是使用map。 nums = sc.parallelize([ 1 , 3 , 4 , 7 ]) spuare = nums.map( lambda x: x * x) 我们知道map是一个转化操作,所以square 仍然是一个RDD ,我们直接将它输出不会得到结果

HDFS 归档存储编程指南

痞子三分冷 提交于 2020-04-16 08:59:24
【推荐阅读】微服务还能火多久?>>> 阿里云智能数据库事业部 OLAP 平台团队现向 2021 届海内外院校应届毕业生(毕业时间在2020年11月-2021年10月之间)招聘大数据系统工程师,有机会转正,有意请加 iteblog 微信内推。 文章目录 1 介绍 2 存储类型和存储策略 2.1 存储类型 2.2 存储策略 2.3 存储策略解析 2.4 配置 3 存储策略命令 3.1 展示存储策略 3.2 设置存储策略 3.3 删除存储策略 3.4 获取存储策略 3.5 应用存储策略 介绍 HDFS 归档存储(Archival Storage)是从 Hadoop 2.6.0 开始引入的(参见 HDFS-6584 )。归档存储是一种将增长的存储容量与计算容量解耦的解决方案。我们可以在集群中部署一些具有更高密度、更便宜的存储且提供更低计算能力的节点,并且可以用作集群中的冷数据存储器。根据我们的设置,可以将热数据移到冷存储介质中。通过添加更多的冷存储节点,可以为集群增加存储能力。 异构存储(Heterogeneous Storage)和归档存储(Archival Storage)提供的框架使得 HDFS 体系结构变得更加通用,使得 Hadoop 集群支持包括 SSD 和内存等存储介质。为了获得更好的性能,用户可以选择将数据存储在 SSD 或内存中。 如果想及时了解Spark、 Hadoop

一、Spark性能优化:开发调优篇

牧云@^-^@ 提交于 2020-04-08 15:05:12
1、前言 在大数据计算领域,Spark已经成为了越来越流行、越来越受欢迎的计算平台之一。Spark的功能涵盖了大数据领域的离线批处理、SQL类处理、流式/实时计算、机器学习、图计算等各种不同类型的计算操作,应用范围与前景非常广泛。在美团•大众点评,已经有很多同学在各种项目中尝试使用Spark。大多数同学(包括笔者在内),最初开始尝试使用Spark的原因很简单,主要就是为了让大数据计算作业的执行速度更快、性能更高。 然而,通过Spark开发出高性能的大数据计算作业,并不是那么简单的。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。 Spark的性能调优实际上是由很多部分组成的,不是调节几个参数就可以立竿见影提升作业性能的。我们需要根据不同的业务场景以及数据情况,对Spark作业进行综合性的分析,然后进行多个方面的调节和优化,才能获得最佳性能。 笔者根据之前的Spark作业开发经验以及实践积累,总结出了一套Spark作业的性能优化方案。整套方案主要分为开发调优、资源调优、数据倾斜调优、shuffle调优几个部分。开发调优和资源调优是所有Spark作业都需要注意和遵循的一些基本原则,是高性能Spark作业的基础;数据倾斜调优

基于hashicorp/raft的分布式一致性实战教学

早过忘川 提交于 2020-03-23 18:42:25
3 月,跳不动了?>>> 本文由云+社区发表 作者: Super 导语:hashicorp/raft是raft算法的一种比较流行的golang实现,基于它能够比较方便的构建具有强一致性的分布式系统。本文通过实现一个简单的分布式缓存系统来介绍使用hashicorp/raft来构建分布式应用程序的方法。 1. 背景 ​ 对于后台开发来说,随着业务的发展,由于访问量增大的压力和数据容灾的需要,一定会需要使用分布式的系统,而分布式势必会引入一致性的问题。 ​ 一般把一致性分为三种类型:弱一致性、最终一致性、强一致性。这三种模型的一致性强度逐渐递增,实现代价也越来越大。通常弱一致性和最终一致性可以异步冗余,强一致性则是同步冗余,而同步也就意味着影响性能。 ​ 对常见的互联网业务来说,使用弱一致性或者最终一致性即可。而使用强一致性一方面会影响系统的性能,另一方面实现也比较困难。常见的一致性协议如zab、raft、paxos,如果由业务纯自己来实现的话代价较大,而且很可能会因为考虑不周而引入其他问题。 ​ 对于一些需要强一致性,而又希望花费较小代价的业务来说,使用开源的一致性协议实现组件会是个不错的选择。hashicorp/raft是raft协议的一种golang实现,由hashicorp公司实现并开源,已经在consul等软件中使用。它封装了raft协议的leader选举、log同步等底层实现

架构师内功心法,参与电商订单业务开发的状态模式详解

只愿长相守 提交于 2020-03-21 14:47:40
3 月,跳不动了?>>> 状态模式在生活场景中也是比较常见的。比如我们平时网购的订单状态变化,还有平时坐电梯,电梯状态的变化。 在软件开发过程中,对于某一项的操作,可能存在不同的情况。通常处理多情况问题最直接的办法就是使用if...else或者switch...case条件语句进行判断。这种做法对于复杂状态的判断天然存在弊端:判断条件语句过于臃肿,可读性较差,不具备扩展性,维度难度也很大。如果转换一下思维,将这些不同状态独立起来用各种不同的类进行表示,系统处理哪种情况,直接使用相应的状态类进行处理,消除条件判断语句,代码也更加具有层次感,且具备良好的扩展能力。 状态模式(State Pattern)也成为状态机模式(State Machine Pattern),是允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。状态模式中类的行为是由状态决定的,不同的状态下有不同的行为。其意图是让一个对象在其内部改变的时候,其行为也随之改变。状态模式的核心就是状态与行为绑定,不同的状态对应不同的行为。 一、状态模式的应用场景 状态模式适用于以下几种场景: 行为随状态改变而改变场景; 一个操作中含有庞大的多分支机构,并且这些分支取决于对象的状态。 状态模式主要包含三种角色: 环境类角色(Context):定义客户端需要的接囗,内部维护一个当前状态实例,并负责具体状态的切换;