首页 文章 精选 留言 我的

精选列表

搜索[未来社区],共10000篇文章
优秀的个人博客,低调大师

FaaS,又一个未来?

作者简介 苗立尧 易宝支付运维工程师,热爱Kubernetes,对容器生态圈具有浓厚兴趣 个人公众号:容器时代 前言 云计算时代出现了大量XaaS形式的概念,从IaaS、PaaS、SaaS到容器云引领的CaaS,再到火热的微服务架构,以及现在越来越多被谈起的Serverless和FaaS,我们正在经历一个技术飞速变革的时代。 一、什么是Faas 云计算时代出现了大量XaaS形式的概念,从IaaS (Infrastructure as a Service)、PaaS (Platform as a Service)、SaaS (Software as a Service) 到容器云引领的CaaS (Containers as a Service),再到火热的微服务架构,它们都在试着将各种软、硬件资源等抽象为一种服务提供给开发者使用,让他们不再

优秀的个人博客,低调大师

警告:未来互联网安全动荡

在一年前,笔者呼吁正在测试IoT的制造企业不要将其传统未联网的产品连接到互联网,很多人都担心IoT会带来很多不安全的产品,并且最终进入我们的日常生活中。 我们现在面临着很多安全挑战,如果幸运的话,也许不会导致全球安全和隐私泄露事故。 一方面,戴尔和联想等公司销售的电脑具有开放的根级CA,让攻击者可以伪造证书和欺诈SSL网站,运行中间人攻击,以及在这些Windows系统安装恶意软件。 而且,在戴尔公司推出的新笔记本电脑中,该公司还将这些证书增加到新电脑的Trusted Root Store中,其中包括私钥。这样一来,任何人都可以创建证书在这些笔记本作为合法证书使用。 另一方面,世界各地的政府机构认为他们应该由某种神奇的访问密钥可访问一切形式的加密,让他们可以解密数据,从而在某种程度上抵御“坏人”。正如Hanlon’s Razor所说,“但凡能用愚蠢解释,就莫要归咎于恶意。” 无论是政府对反加密的欲望,还是戴尔和联想的失误,其结果都是一样:他们通过向外部人士提供对“加密”通信的访问权限,而破坏了加密和隐私性。当然,戴尔和联想只是影响其自己的产品,而反加密组织则会影响到每个制造商的每个设备。 然后我们看到IoT的崛起。在看到各种规模的企业糟糕的安全做法后,笔者并不看好企业将互联网连接到以前未联网的产品的做法。 例如,如果冰箱连接到互联网,糟糕的安全做法可能让攻击者控制冰箱功能。联网和受控制的污水泵听起来不错,但它可能被恶意远程关闭。我们看到各种家庭内部安全摄像机生成能提供更高的安全性,但这些摄像头也很容易被用来记录你家庭的每个动作。我们看到微软为Xbox One增加了永远在线的高清摄像头和麦克风,而且无法被禁用,这让微软遭受指控,因其可能监控用户或让政府这样做。 无论是何种设备,只要房间里有能够记录视频和音频的设备,这些设备就可能被利用来在暗中记录一切,而且也不一定是微软或政府在监控(+本站微信networkworldweixin),如果安全做法不够好,这可以是任何人。 总之,使用闭源代码的联网设备都可能构成安全威胁。你购买的漂亮的WiFi装置可能被用来访问你的家庭网络以及连接到僵尸网络。你的新智能电视可能会监听房间里说的话,并发送这些数据进行分析。或者,有人会远程控制你的汽车,并开车上路。 这并不是猜测或者假设,这肯定也不是阴谋论,这就是现在发生的事情。 你可以信任微软和三星不会窥探你的客厅,并相信戴尔和联想会努力保证你的隐私性,同时,希望供应商添加互联网连接到其核心产品。在这种情况下,你还需要相信他们能够保护所有连接、数据以及数据收集方法,让攻击者不会来添乱。 对于私营企业和政府,历史经验表明,这是愚蠢的赌注。 本文转自d1net(转载)

优秀的个人博客,低调大师

数据仓库的未来 MariaDB ColumnStore

MariaDB ColumnStore 简介 Part1:写在最前 MariaDB ColumnStore is the future of data warehousing. ColumnStore allows us to store more data and analyze it faster. Everyday, Pinger’s mobile applications process millions of text messages and phone calls. We also process more than 1.5 billion rows of logs per day. Analytic scalability and performance is critical to our business. MariaDB’s ColumnStore manages massive amounts of data and will scale with Pinger as we grow. ----from mariadb.com Part2:大牛如何说 MariaDB ColumnStore是在MariaDB 10.1基础上移植了InfiniDB4.6.2构建的大规模并行,高性能,压缩,分布式开源列式存储引擎,类似收费产品Infobright。它设计用于大数据离线分析,用来抗衡Hadoop。你可以使用标准SQL语句进行查询,支持目前流行的sqlyog/navicat客户端工具连接,对业务方使用没有任何的不便,并且你不需要创建任何索引,不需要修改业务方的复杂SQL(自身就支持复杂的关联查询、聚合、存储过程和用户定义的函数),你唯一要做的就是把数据导入到ColumnStore里,就没你事了。这对一家没有Hadoop工程师的公司来说,MariaDB ColumnStore会是一个更好的替代产品。 -----from 贺春旸 Part3:环境简介 192.168.1.248 HE1 um1 192.168.1.249 HE2 um2 192.168.1.250 HE3 pm1 192.168.1.251 HE4 pm2 Column Store架构概述 Part1:写在最前 MariaDB ColumnStore是一种专为分布式大规模并行处理(MPP)设计的列式存储引擎。它由三个组件组成,协同工作。 在官方给出的架构图中,我们可以看到分为三个组件构成:UM、PM、数据存储层。 用户模块(UM): 用户模块管理和控制终端用户查询的操作,它维护每个查询的状态,向一个或多个性能模块发出请求以代为执行SQL查询工作,最后,用户模块汇集来自各个参与的性能模块的所有查询结果,以形成返回给用户的完整的查询结果集。 性能模块(PM): 性能模块负责存储,检索和管理数据,处理对查询操作的块请求,并将其传递回用户模块以完成查询请求。性能模块将获取的数据缓存在其内存中计算。MPP是通过允许用户配置尽可能多的性能模块,以实现更高的处理能力。 存储: MariaDB ColumnStore对于存储系统极为灵活。当在内部运行时,它可以使用本地存储或共享存储(例如SAN)来存储数据。在Amazon EC2环境中,它可以使用临时或弹性块存储(EBS)卷。当无共享部署需要数据冗余时,它被构建为与GlusterFS和Apache Hadoop分布式文件系统(HDFS)集成。 一句话总结:用户模块(UM)将客户端发出的SQL请求进行分配,分配到后端性能模块(PM),PM进行数据查询分析,将处理的结果返回给UM,UM再把PM分析的结果进行聚合,最后返回给客户端最终的查询结果。 Column Store性能对比 Percona专业MySQL服务提供商性能测试InfiniDB比其他OLAP优势明显。 Column Store安装 Part1:打通互信 [root@HE1~]#ssh-keygen [root@HE1~]#ssh-copy-id'-p22root@192.168.1.248' [root@HE1~]#ssh-copy-id'-p22root@192.168.1.249' [root@HE1~]#ssh-copy-id'-p22root@192.168.1.250' [root@HE1~]#ssh-copy-id'-p22root@192.168.1.251' [root@HE1~]#sshHE1 [root@HE1~]#sshHE2 [root@HE1~]#sshHE3 [root@HE1~]#sshHE4 [root@HE1~]#cat/etc/hosts 192.168.1.248HE1 192.168.1.249HE2 192.168.1.250HE3 192.168.1.251HE4 在HE1,HE2,HE3,HE4每台机器上执行上述命令,打通ssh互信。 Part2:关闭防火墙 [root@HE1 ~]# /etc/init.d/iptables status iptables: Firewall is not running. [root@HE1 ~]# chkconfig iptables off [root@HE1 ~]# chkconfig --list | grep iptables iptables 0:off1:off2:off3:off4:off5:off6:off Part3:关闭文件系统访问时间和修改磁盘调度策略 [root@HE1~]#cat/etc/fstab # #/etc/fstab #CreatedbyanacondaonSatMar509:35:402016 # #Accessiblefilesystems,byreference,aremaintainedunder'/dev/disk' #Seemanpagesfstab(5),findfs(8),mount(8)and/orblkid(8)formoreinfo # UUID=397d50ba-22b0-4d50-9e29-89e3b92d2d07/ext4defaults,noatime,barrier=011 [root@HE1~]#echo"deadline">/sys/block/sda/queue/scheduler Part4:关闭numa [root@HE1~]#cat/etc/grub.conf #grub.confgeneratedbyanaconda # #Notethatyoudonothavetorerungrubaftermakingchangestothisfile #NOTICE:Youhavea/bootpartition.Thismeansthat #allkernelandinitrdpathsarerelativeto/boot/,eg. #root(hd0,0) #kernel/vmlinuz-versionroroot=/dev/sda2 #initrd/initrd-[generic-]version.img #boot=/dev/sda default=1 timeout=5 splashp_w_picpath=(hd0,0)/grub/splash.xpm.gz hiddenmenu titleCentOS(2.6.32-573.18.1.el6.x86_64.debug) root(hd0,0) kernel/vmlinuz-2.6.32-573.18.1.el6.x86_64.debugroroot=UUID=397d50ba-22b0-4d50-9e29-89e3b92d2d07rd_NO_LUKSrd_NO_LVMLANG=en_US.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autoKEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquietnuma=off initrd/initramfs-2.6.32-573.18.1.el6.x86_64.debug.img titleCentOS(2.6.32-431.el6.x86_64) root(hd0,0) kernel/vmlinuz-2.6.32-431.el6.x86_64roroot=UUID=397d50ba-22b0-4d50-9e29-89e3b92d2d07rd_NO_LUKSrd_NO_LVMLANG=en_US.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autoKEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquietnuma=off initrd/initramfs-2.6.32-431.el6.x86_64.img Part5:安装jemalloc内存管理 [root@HE1 ~]# yum install jemalloc-* [root@HE1 ~]# reboot 在HE1,HE2,HE3,HE4每台机器上执行上述命令 Part6:安装boost软件包 [root@HE1 ~]# yum -y install boost* [root@HE1 ~]# yum -y groupinstall "Development Tools" [root@HE1 ~]# yum -y install cmake [root@HE1 ~]# tar xvf boost_1_55_0.tar.gz [root@HE1 ~]# cd boost_1_55_0 [root@HE1 boost_1_55_0]# ./bootstrap.sh --with-libraries=atomic,date_time,exception,filesystem,iostreams,locale,program_options,regex,signals,system,test,thread,timer,log --prefix=/usr [root@HE1 boost_1_55_0]# ./b2 install Part6:安装perl依赖包 [root@HE1 ~]# yum -y install expect perl perl-DBI openssl zlib perl-DBD-MySQL Part7:安装Mariadb ColumStore [root@HE1 ~]# tar xvf mariadb-columnstore-1.0.6-1-centos6.x86_64.bin.tar.gz -C /usr/local Part8:配置Mariadb ColumStore [root@HE1 ~]# /usr/local/mariadb/columnstore/bin/postConfigure 至此,MariaDB ColumnStore安装并配置完成 Column Store单点故障测试 Part1:关闭HE2 当前HE2为primary um mcsadmin>getSystemStatus getsystemstatusMonDec2615:56:472016 Systemcolumnstore-1 SystemandModulestatuses ComponentStatusLastStatusChange -------------------------------------------------------------- SystemBUSY_INITMonDec2615:56:382016 Moduleum1AUTO_DISABLED/DEGRADEDMonDec2615:56:402016 Moduleum2ACTIVEMonDec2615:54:212016 Modulepm1ACTIVEMonDec2602:03:272016 Modulepm2ACTIVEMonDec2602:03:412016 ActiveParentOAMPerformanceModuleis'pm1' PrimaryFront-EndMariaDBColumnstoreModuleis'um2' MariaDBColumnstoreReplicationFeatureisenabled [root@HE2~]#reboot 在当前primary um重启后,可以看到primary um已经自动切换至um1 mcsadmin>getSystemStatus getsystemstatusMonDec2615:58:192016 Systemcolumnstore-1 SystemandModulestatuses ComponentStatusLastStatusChange -------------------------------------------------------------- SystemBUSY_INITMonDec2615:58:102016 Moduleum1ACTIVEMonDec2615:57:172016 Moduleum2AUTO_DISABLED/DEGRADEDMonDec2615:58:112016 Modulepm1ACTIVEMonDec2602:03:272016 Modulepm2ACTIVEMonDec2602:03:412016 ActiveParentOAMPerformanceModuleis'pm1' PrimaryFront-EndMariaDBColumnstoreModuleis'um1' MariaDBColumnstoreReplicationFeatureisenabled Part2:检查状态 在原primary um (HE2)中进入数据库查看,现在已经是um1的从库 [root@HE2~]#mcsmysql WelcometotheMariaDBmonitor.Commandsendwith;or\g. YourMariaDBconnectionidis10 Serverversion:10.1.19-MariaDBColumnstore1.0.6-1 Copyright(c)2000,2016,Oracle,MariaDBCorporationAbandothers. Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement. MariaDB[(none)]>showslavestatus\G ***************************1.row*************************** Slave_IO_State:Waitingformastertosendevent Master_Host:192.168.1.248 Master_User:idbrep Master_Port:3306 Connect_Retry:60 Master_Log_File:mysql-bin.000013 Read_Master_Log_Pos:1879 Relay_Log_File:relay-bin.000002 Relay_Log_Pos:537 Relay_Master_Log_File:mysql-bin.000013 Slave_IO_Running:Yes Slave_SQL_Running:Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno:0 Last_Error: Skip_Counter:0 Exec_Master_Log_Pos:1879 Relay_Log_Space:829 Until_Condition:None Until_Log_File: Until_Log_Pos:0 Master_SSL_Allowed:No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master:0 Master_SSL_Verify_Server_Cert:No Last_IO_Errno:0 Last_IO_Error: Last_SQL_Errno:0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id:1 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid:No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode:conservative 1rowinset(0.00sec) MariaDB[(none)]> Column Store测试 Part1:主键和索引 MariaDB[helei]>createtablehelei_innodb( ->idint(10)unsignedNOTNULLAUTO_INCREMENT, ->c1int(10)NOTNULLDEFAULT'0', ->c2int(10)unsignedDEFAULTNULL, ->c5int(10)unsignedNOTNULLDEFAULT'0', ->c3timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP, ->c4varchar(200)NOTNULLDEFAULT'', ->PRIMARYKEY(id), ->KEYidx_c1(c1), ->KEYidx_c2(c2) ->)ENGINE=InnoDB; QueryOK,0rowsaffected(0.03sec) MariaDB[helei]>createtablehelei_cs( ->idint(10)unsignedNOTNULLAUTO_INCREMENT, ->c1int(10)NOTNULLDEFAULT'0', ->c2int(10)unsignedDEFAULTNULL, ->c5int(10)unsignedNOTNULLDEFAULT'0', ->c3timestampNOTNULLDEFAULTCURRENT_TIMESTAMPONUPDATECURRENT_TIMESTAMP, ->c4varchar(200)NOTNULLDEFAULT'', ->PRIMARYKEY(id), ->KEYidx_c1(c1), ->KEYidx_c2(c2) ->)ENGINE=Columnstore; ERROR1069(42000):Toomanykeysspecified;max0keysallowed 这里可以看出,columnstore存储引擎不支持主键也不需要索引 MariaDB[helei]>createtablehelei_cs( ->idint(10)unsignedNOTNULL, ->c1varchar(200)NOTNULLDEFAULT'' ->)ENGINE=Columnstore; QueryOK,0rowsaffected(0.34sec) MariaDB[helei]>insertintohelei_csvalues(1,'1'); QueryOK,1rowaffected(0.60sec) MariaDB[helei]>insertintohelei_csvalues(2,'2'); QueryOK,1rowaffected(0.08sec) MariaDB[helei]>insertintohelei_csvalues(3,'3'); QueryOK,1rowaffected(0.17sec) 这里可以看出columnstore的插入速度较慢 Warning:警告 columnstore不支持主键、索引、timestamp、collate用法、char\varchar类型的sum/average用法。 Part2:效率测试 1G内存虚拟机MariaDB ColumnStore 2.82s,线上生产库8G的innodb_buffer_pool_size该条慢查询耗时17.894s。 BUG发现 如果pm2的机器挂掉了,按照原本的想法,应该pm1可以继续工作,但无法进行查询,会报错: ERROR 1815 (HY000): Internal error: st: 10000 TupleBPS::sendPrimitiveMessages() caught an exception: IDB-2034: At least one DBRoot required for that query is offline. 这应该是一个BUG,因为pm是负责拉取数据到内存中进行计算的,数据本文中的实验应该都存放在um机器下。我们来查一下现在表中的数据: MariaDB[erp_test]>showtables; +--------------------+ |Tables_in_erp_test| +--------------------+ |erp_bjlikp| |erp_bjlips| |erp_likp| |erp_lips| |erp_mara| +--------------------+ 5rowsinset(0.00sec) MariaDB[erp_test]>selectcount(*)fromerp_bjlikp; +----------+ |count(*)| +----------+ |0| +----------+ 1rowinset(1.15sec) MariaDB[erp_test]>selectcount(*)fromerp_bjlips; +----------+ |count(*)| +----------+ |0| +----------+ 1rowinset(1.15sec) MariaDB[erp_test]>selectcount(*)fromerp_lips; +----------+ |count(*)| +----------+ |0| +----------+ 1rowinset(1.14sec) MariaDB[erp_test]>selectcount(*)fromerp_mara; +----------+ |count(*)| +----------+ |0| +----------+ 1rowinset(1.15sec) 会发现所有的表行数都变为0了 ProcessMonitorpm2AUTO_OFFLINETueDec2722:23:502016 ProcessManagerpm2AUTO_OFFLINETueDec2722:23:502016 DBRMControllerNodepm2AUTO_OFFLINETueDec2722:23:502016 ServerMonitorpm2AUTO_OFFLINETueDec2722:23:502016 DBRMWorkerNodepm2AUTO_OFFLINETueDec2722:23:502016 DecomSvrpm2AUTO_OFFLINETueDec2722:23:502016 PrimProcpm2AUTO_OFFLINETueDec2722:23:502016 WriteEngineServerpm2AUTO_OFFLINETueDec2722:23:502016 MariaDB[erp_test]>selectcount(*)fromerp_lips; +----------+ |count(*)| +----------+ |3147299| +----------+ 1rowinset(0.37sec) MariaDB[erp_test]>selectcount(*)fromerp_mara; +----------+ |count(*)| +----------+ |4361| +----------+ 1rowinset(0.08sec) MariaDB[erp_test]>selectcount(*)fromerp_bjlips; +----------+ |count(*)| +----------+ |2762244| +----------+ 1rowinset(0.13sec) MariaDB[erp_test]>selectcount(*)fromerp_bjlikp; +----------+ |count(*)| +----------+ |19032| +----------+ 1rowinset(0.09sec) MariaDB[erp_test]>selectcount(*)fromerp_likp; +----------+ |count(*)| +----------+ |169002| +----------+ 1rowinset(0.08sec) pm2机器启动后,发现又恢复正常 这应该是软件的一个bug,应该会在1.0.7GA版本修复。 感谢贺春旸老师指点,本人在测试环境中得以验证该BUG ——总结—— 大家可以用生产的复杂SQL跑一跑,来体验一下。由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。

资源下载

更多资源
Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册