因为笔者最近一直想实现一个自己的APM服务端,但是看了很多APM服务端系统没有使用.Net Core来写的,都是采用Java或者Go,笔者是写C#的,但是笔者认为.Net Core的性能在现在对比Go和Java很有优势,所以笔者才有想法使用.Net Core来实现一个APM的服务端;最近在研究SkyWalking APM服务端的实现,在研究下来SkyWalking存储使用的是MySql、PgSql、ES用来存储数据,笔者本想使用MySql来进行存储但是看了很多文章都不推荐使用,原因是因为MySql吞吐量太低,对于大量数据提交并无法支撑,但是笔者不想是用ES,众所周知ES的配置相当麻烦而且也很吃内存,笔者配置了几次但是因为服务器是自己家里的机器,有时候会存在关机的情况,就会导致莫名其妙的无法启动ES,所以笔者在研究了一些其他类型的数据库,笔者经过对比MongDB、ClickHouse 最终选择了ClickHouse;在笔者看来放弃MongoDB的原因也是因为他的吞吐量太低,因为MongDB并不是适合APM数据存储,MongoDB本身是一个适用于存储非结构化数据和半结构化数据。ClickHouse是一种列式数据库,适用于存储和分析大量结构化数据,而且他的写入速度快,适合APM这种级别的写入效率。实现APM服务端的话那么它必然需要高性能的写入,所以笔者选择了ClickHouse。
ClickHouse是一种高性能、开源、列式数据库管理系统(DBMS),被设计用于在线分析处理(OLAP)环境下的大规模数据仓库。以下是ClickHouse的优势和缺点:
总的来说,ClickHouse是一种专门为大规模数据分析而设计的高性能数据库,可以处理海量数据且速度非常快。但是,它不支持事务和行级别的更新和删除操作,并且需要更复杂的配置和调试,因此需要更多的学习和使用时间。
官网安装clickhouse命令:https://clickhouse.com/docs/zh/getting-started/install
sudo apt-get install -y apt-transport-https ca-certificates dirmngr
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 8919F6BD2B48D754
echo "deb https://packages.clickhouse.com/deb stable main" | sudo tee \
/etc/apt/sources.list.d/clickhouse.list
sudo apt-get update
# 安装命令
sudo apt-get install -y clickhouse-server clickhouse-client
# 启动服务端
sudo systemctl start clickhouse-server
# 查看状态
sudo systemctl status clickhouse-server
# 停止服务
sudo systemctl stop clickhouse-server
# 重新启动服务端
sudo systemctl restart clickhouse-server
# 连接服务端
clickhouse-client # or "clickhouse-client --password" if you've set up a password.
<!-- Users and ACL. -->
<users>
<kawhi>
<!--<password></password>-->
<password_sha256_hex>896f566e6b8731559d49b0744bdbdb3274ed3eaed2ed494f44da6f8957a6590d</password_sha256_hex>
<networks>
<ip>::/0</ip>
</networks>
<!-- Settings profile for user. -->
<profile>default</profile>
<!-- Quota for user. -->
<quota>default</quota>
<!-- User can create other users and grant rights to them. -->
<!-- <access_management>1</access_management> -->
</kawhi>
</users>
clickhouse-client --password
create user kawhi identified with sha256_password by 'abcdefg' host any;
GRANT ALL ON *.* TO kawhi WITH GRANT OPTION;
show grants for kawhi
建议在所有安装完成以后直接先修改目录,这样我们还没有任何数据进来,避免遗漏或者丢失数据
# 创建目录
mkdir /clickhouse
sudo chown clickhouse:clickhouse -R 你的目录
# 打开配置文件
sudo nano /etc/clickhouse-server/config.xml
# 找到<path>/var/lib/clickhouse/<path> 修改成以下
<path>你的目录<path> # 例如: <path>/home/kawhi/clickhouse/</path>
红框内的那段代码默认是被注释掉的,将其取消注释。

# 重新启动服务端
sudo systemctl restart clickhouse-server
<remote_servers>
<!--集群名称《可自行修改》-->
<luck_click_house_cluster>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<shard>
<!--weight表示每个分片的写入权重值-->
<weight>1</weight>
<!--internal_replication表示是否启用内部复制-->
<internal_replication>true</internal_replication>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<replica>
<host>192.168.31.20</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
<replica>
<host>192.168.31.20</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
</shard>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<shard>
<!--weight表示每个分片的写入权重值-->
<weight>1</weight>
<!--internal_replication表示是否启用内部复制-->
<internal_replication>true</internal_replication>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<replica>
<host>192.168.31.21</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
<replica>
<host>192.168.31.21</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
</shard>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<shard>
<!--weight表示每个分片的写入权重值-->
<weight>1</weight>
<!--internal_replication表示是否启用内部复制-->
<internal_replication>true</internal_replication>
<!-- replica定义分片的副本数量,这里只配置了一个,如果需要配置多个,追加replica即可 -->
<replica>
<host>192.168.31.22</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
<replica>
<host>192.168.31.22</host>
<port>9000</port>
<user>default</user>
<password>wzw0126..</password>
</replica>
</shard>
</luck_click_house_cluster>
</remote_servers>
集群配置添加完成后确认集群在任意一台机器上执行下面的命令登录数据库,确认集群配置,我是使用的3拖6的集群配置;
# 登录clickhouse服务端
clickhouse-client -u 你的用户名
# 查询集群命令
select * from system.clusters;
在配置ClickHouse时遇到了很多问题,例如不知道集群如何设置,所以花费了将近一天的时间,但是如果你们公司有专门的DBA这件事情完全不用你操心,或者可以选择云服务商的ClickHouse,笔者纯粹是想学习以下ClickHouse的集群配置,所以会花费一些时间来进行研究,但是重点仍然是APM服务端的实现。在看过SkyWalking的表设计之后,笔者是被震惊到了,他有287张表,甚是惊讶。毕竟SkyWalking已经是一个成熟的APM项目,所以还是有很多值得学习的。本篇只讲了如何配置ClickHouse集群,但是笔者在创建分布式数据库和表时发现ClickHouse想使用分布式的数据库或者表还需要Zookeeper,所以ClickHouse会出至少两篇文章,下一篇将记录ClickHouse如何使用Zookeeper集群来建立分布式数据库或者表。ClickHouse系列是APM系统的打头。
我想为Heroku构建一个Rails3应用程序。他们使用Postgres作为他们的数据库,所以我通过MacPorts安装了postgres9.0。现在我需要一个postgresgem并且共识是出于性能原因你想要pggem。但是我对我得到的错误感到非常困惑当我尝试在rvm下通过geminstall安装pg时。我已经非常明确地指定了所有postgres目录的位置可以找到但仍然无法完成安装:$envARCHFLAGS='-archx86_64'geminstallpg--\--with-pg-config=/opt/local/var/db/postgresql90/defaultdb/po
我打算为ruby脚本创建一个安装程序,但我希望能够确保机器安装了RVM。有没有一种方法可以完全离线安装RVM并且不引人注目(通过不引人注目,就像创建一个可以做所有事情的脚本而不是要求用户向他们的bash_profile或bashrc添加一些东西)我不是要脚本本身,只是一个关于如何走这条路的快速指针(如果可能的话)。我们还研究了这个很有帮助的问题:RVM-isthereawayforsimpleofflineinstall?但有点误导,因为答案只向我们展示了如何离线在RVM中安装ruby。我们需要能够离线安装RVM本身,并查看脚本https://raw.github.com/wayn
我有一个奇怪的问题:我在rvm上安装了rubyonrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(
我刚刚为fedora安装了emacs。我想用emacs编写ruby。为ruby提供代码提示、代码完成类型功能所需的工具、扩展是什么? 最佳答案 ruby-mode已经包含在Emacs23之后的版本中。不过,它也可以通过ELPA获得。您可能感兴趣的其他一些事情是集成RVM、feature-mode(Cucumber)、rspec-mode、ruby-electric、inf-ruby、rinari(用于Rails)等。这是我当前用于Ruby开发的Emacs配置:https://github.com/citizen428/emacs
我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e
我的最终目标是安装当前版本的RubyonRails。我在OSXMountainLion上运行。到目前为止,这是我的过程:已安装的RVM$\curl-Lhttps://get.rvm.io|bash-sstable检查已知(我假设已批准)安装$rvmlistknown我看到当前的稳定版本可用[ruby-]2.0.0[-p247]输入命令安装$rvminstall2.0.0-p247注意:我也试过这些安装命令$rvminstallruby-2.0.0-p247$rvminstallruby=2.0.0-p247我很快就无处可去了。结果:$rvminstall2.0.0-p247Search
我实际上是在尝试使用RVM在我的OSX10.7.5上更新ruby,并在输入以下命令后:rvminstallruby我得到了以下回复:Searchingforbinaryrubies,thismighttakesometime.Checkingrequirementsforosx.Installingrequirementsforosx.Updatingsystem.......Errorrunning'requirements_osx_brew_update_systemruby-2.0.0-p247',pleaseread/Users/username/.rvm/log/138121
由于fast-stemmer的问题,我很难安装我想要的任何rubygem。我把我得到的错误放在下面。Buildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingfast-stemmer:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcreatingMakefilemake"DESTDIR="cleanmake"DESTDIR=
当我尝试安装Ruby时遇到此错误。我试过查看this和this但无济于事➜~brewinstallrubyWarning:YouareusingOSX10.12.Wedonotprovidesupportforthispre-releaseversion.Youmayencounterbuildfailuresorotherbreakages.Pleasecreatepull-requestsinsteadoffilingissues.==>Installingdependenciesforruby:readline,libyaml,makedepend==>Installingrub
我试过重新启动apache,缓存的页面仍然出现,所以一定有一个文件夹在某个地方。我没有“公共(public)/缓存”,那么我还应该查看哪些其他地方?是否有一个URL标志也可以触发此效果? 最佳答案 您需要触摸一个文件才能清除phusion,例如:touch/webapps/mycook/tmp/restart.txt参见docs 关于ruby-如何在Ubuntu中清除RubyPhusionPassenger的缓存?,我们在StackOverflow上找到一个类似的问题: