钱文翔的博客


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索
close
钱文翔的博客

(翻译)Sharding-mongo官方文档3.2版本

发表于 2016-12-22 | 分类于 数据库学习记录 |

此篇文章为mongo官方文档,版本为3.2. 地址为:https://docs.mongodb.com/v3.2/core/sharded-cluster-components/

分片(Sharding)

分片是一个在多个主机上分发数据的方法。 MongoDB用分片实现大数据集合和高吞入量操作。
大数据量集合和高吞吐量操作应用数据库系统挑战单个服务器的容量。例如,高请求速率能耗尽CPU性能。工作集大小大于系统的RAM给磁盘驱动器的I / O性能施加压力
有两种方法处理系统的增长:垂直扩展和水平扩展
垂直扩展涉及扩大单个服务器的性能,例如使用更强大的CPU,添加更多RAM,或者增加存储空间。可用技术中的限制可能会限制单个机器的工作负载能力。另外,云服务提供商在可用的硬件配置上设置上限。所以,对于垂直扩展存在实际的最大值。
水平扩展涉及将系统的数据集切分并通过多服务器加载,添加另外的服务器来扩大需要的容量。既然单个机器的整体速度和容量不高,那么每个机器处理整个工作量的一部分,可能提供比一个高速度高容量服务器更好的效果。扩展部署的容量仅需要根据需要添加额外的服务器,总体成本可能比单个机器的高端硬件低。
MongoDb支持通过分片来进行水平扩展。

分片集群

MongoDB的分片集群由以下组件组成:

  • 分片(shard):每个分片包含被分片数据的子集。每个分片可以被部署成副本集
  • mongos:mogos扮演查询路由(query router)的角色,提供一个在客户端个分片集群之间的接口
  • config servers: 配置服务器存储元数据(metadata)并配置集群的设置。在MongoDB 3.4,配置服务器必须部署成副本集

下面这张图描述了在一个分片集群中的交互
Alt text

MongoDB分片数据是collection级别的,在集群中分发collection数据

阅读全文 »
钱文翔的博客

MongoDB-Sharding常用命令

发表于 2016-12-22 | 分类于 数据库学习记录 |

资料来源: https://docs.mongodb.com/v3.2/tutorial/administer-shard-tags/
详细命令参考: https://docs.mongodb.com/v3.2/reference/sharding/

分片常用

配置Sharding

  • 连接路由服务器

    1
    .\bin\mongo.exe admin --port 40000
  • 设置分片服务器

    1
    2
    3
    4
    5
    db.runCommand({ addshard:"127.0.0.1:27100" })
    db.runCommand({ addshard:"127.0.0.1:27101" })
    db.runCommand({ addshard:"127.0.0.1:27017" })
    或者
    sh.addShard("127.0.0.1:27100")
  • 设置要分片的数据库

    1
    2
    3
    db.runCommand({ enablesharding:"qdgame" })
    或者:
    sh.enableSharding("qdgame")
  • 关闭balancing

    1
    sh.disableBalancing("qdgame.backpack")
阅读全文 »
钱文翔的博客

《Go语言圣经》学习小记(2)

发表于 2016-12-20 | 分类于 Go学习小记 |

函数

函数声明

在函数体中,函数的形参作为局部变量,被初始化为调用者提供的值。函数的形参和有名返回值作为函数最外层的局部变量,被存储在相同的词法块中。
实参通过值的方式传递,因此函数的形参是实参的拷贝。对形参进行修改不会影响实参。但是,如果实参包括引用类型,如指针,slice(切片)、map、function、channel等类型,实参可能会由于函数的简介引用被修改。
没有函数体的函数声明,这表示该函数不是以Go实现的。这样的声明定义了函数标识符。

1
2
package math
func Sin(x float64) float //implemented in assembly language

注:此代码来自官方的math包中

阅读全文 »

钱文翔的博客

mongo数据库sharding学习记录

发表于 2016-12-09 | 分类于 数据库学习记录 |

参考文章:http://www.runoob.com/mongodb/mongodb-sharding.html

windows系统。mongo3.2版本

建立目录s0,s1,log,config

步骤一:启动Shard Server

1
2
3
.\bin\mongod.exe --port 27100 --dbpath=.\mongos\s0 --logpath=.\mongos\log\s0.log --logappend --journal --storageEngine=mmapv1 --shardsvr

.\bin\mongod.exe --port 27101 --dbpath=.\mongos\s1 --logpath=.\mongos\log\s1.log --logappend --journal --storageEngine=mmapv1 --shardsvr

阅读全文 »
钱文翔的博客

《Go语言圣经》学习小记(1)

发表于 2016-12-07 | 分类于 Go学习小记 |

记录《Go语言圣经》学习笔记。(实为划重点)

顺序通信进程 ( communicating sequential processes ,缩写为CSP)。在CSP中,程序是一组中间没有共享状态的平行运行的处理过程,它们之间使用管道进行通信和控制同步。
Go语言的官方博客 https://blog.golang.org 会不定期发布一些Go语言最好的实践文章,包括当前语言的发展状态、未来 的计划、会议报告和Go语言相关的各种会议的主题等信息(译注: http://talks.golang.org/ 包含了 官方收录的各种报告的讲稿)。

阅读全文 »

钱文翔的博客

Error handling and Go (翻译)

发表于 2016-12-05 | 分类于 Go学习小记 |

本篇文章来自《The Go Blog》。文章地址为https://blog.golang.org/error-handling-and-go
下面是在下的翻译。因为看英文看完就忘,所以翻译翻译,聊以自慰。

错误处理和Go

2011年7月12日

引言

如果你写过Go的代码,你可能已经遇到了内置的error类型。Go的代码使用error表示异常状态。例如os.Open函数打开文件失败的时候,返回一个不为nil的error值。

1
func Open(name string) (file *File, err error)

下面的代码使用os.Open打开一个文件。如果出现一个error,它会调用log.Fatal来打印出错误结束。

1
2
3
4
5
f, err := os.Open("filename.ext")
if err != nil {
log.Fatal(err)
}
// do something with the open *File f

在Go中,你仅需要知道这些关于error类型的知识,就能做很多事情了,但是在这篇文章中我们将仔细研究error,并讨论在Go中的一些好的错误处理的实例

阅读全文 »

钱文翔的博客

我的Redis初次实战

发表于 2016-09-03 | 分类于 数据库学习记录 |

因为各种原因,我必须在windows上进行服务器开发,所以我需要在windows上运行redis,即使《redis in action》上明确写着不推荐在windows上使用redis。
我在windows上使用的redis是从 https://github.com/dmajkic/redis/downloads 获取的。
我使用redis的桌面客户端为Redis Desktop Manager。使用的原因仅仅是第一个搜到的客户端就是他且没有让我讨厌的地方,就继续用了。软件地址https://redisdesktop.com/download。
极力推荐《redis实战》。从第一章开始,在介绍什么是redis,有什么用,与其他数据库有什么区别之后,就开始从一个项目开始,演示如何使用redis。讲的第一个项目是对文章进行投票,这让我的回忆起我的大学的第一个项目–一个投票系统的实现。

阅读全文 »

12
钱文翔

钱文翔

自理,自励,自立

17 日志
5 分类
22 标签
© 2018 钱文翔
由 Hexo 强力驱动
主题 - NexT.Mist