首页 文章 精选 留言 我的

精选列表

搜索[稳定],共10000篇文章
优秀的个人博客,低调大师

搭建mcollective高可用,使puppet架构更加安全、稳定

一、配置Rabbitmq 安装(略),可参考http://kisspuppet.com/2013/11/10/mcollective-middleware/或http://rsyslog.org/2013/11/10/mcollective-middleware/ 1.开启插件rabbitmq_stomp 1 2 3 4 [root@linuxmaster1poc ~]# rabbitmq-plugins enable rabbitmq_stomp The following plugins have been enabled: rabbitmq_stomp Plugin configuration has changed. Restart RabbitMQ for changes to take effect. 2.添加tcp监听端口和范围 1 2 3 4 [root@linuxmaster1poc ~]# vim /etc/rabbitmq/rabbitmq.config [ {rabbitmq_stomp, [{tcp_listeners, [ 61613 ]}]} ]. 备注:可参考http://www.rabbitmq.com/stomp.html 3.创建账户并设置权限 如果你以前配置过,建议将配置清空 1 2 3 4 5 6 7 8 9 [root@linuxmaster1poc ~]# rabbitmqctl stop_app Stopping node rabbit@linuxmaster1poc ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl reset Resetting node rabbit@linuxmaster1poc ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl start_app Starting node rabbit@linuxmaster1poc ... ...done. 删除默认用户guest,添加三个用户(webadmin-http访问用,admin--管理员,mcrabbitmq--mcollective链接用) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 [root@linuxmaster1poc ~]# rabbitmqctl list_users Listing users ... guest [administrator] ...done. [root@linuxmaster1poc ~]# rabbitmqctl delete_user guest Deleting user "guest" ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl add_user mc_rabbitmq 123 .com Creating user "mc_rabbitmq" ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl add_user admin password= 123 .com Creating user "admin" ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl add_user web_admin 123 .com Creating user "web_admin" ... ...done. 设置用户的角色 1 2 3 4 5 6 [root@linuxmaster1poc ~]# rabbitmqctl set_user_tags admin administrator Setting tags for user "admin" to [administrator] ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl set_user_tags web_admin monitoring Setting tags for user "web_admin" to [monitoring] ... ...done. 创建虚拟主机组 1 2 3 [root@linuxmaster1poc ~]# rabbitmqctl add_vhost /mcollective Creating vhost "/mcollective" ... ...done. 设置用户访问虚拟主机组的权限 1 2 3 4 5 6 7 8 9 [root@linuxmaster1poc ~]# rabbitmqctl set_permissions -p "/mcollective" mc_rabbitmq ".*" ".*" ".*" Setting permissions for user "mc_rabbitmq" in vhost "/mcollective" ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl set_permissions -p "/mcollective" admin ".*" ".*" ".*" Setting permissions for user "admin" in vhost "/mcollective" ... ...done. [root@linuxmaster1poc ~]# rabbitmqctl set_permissions -p "/mcollective" web_admin ".*" ".*" ".*" Setting permissions for user "web_admin" in vhost "/mcollective" ... ...done. 重启rabbitmq-server服务 1 2 3 [root@linuxmaster1poc ~]# /etc/init.d/rabbitmq-server restart Restarting rabbitmq-server: SUCCESS rabbitmq-server. 查看用户以及角色是否创建成功 1 2 3 4 5 6 [root@linuxmaster1poc ~]# rabbitmqctl list_users Listing users ... admin [administrator] mc_rabbitmq [] web_admin [monitoring] ...done. 查看虚拟主机组“/mcollective”中所有用户的权限 1 2 3 4 5 6 7 [root@linuxmaster1poc ~]# rabbitmqctl list_permissions -p "/mcollective" Listing permissions in vhost "/mcollective" ... admin .* .* .* mc_rabbitmq .* .* .* web_admin .* .* .* ...done. [root@linuxmaster1poc ~]# 4、登录http://192.168.100.120:15672/设置虚拟主机“/mcollective”的exchanges 默认配置 1 2 3 4 5 6 7 8 9 10 [root@linuxmaster1poc ~]# rabbitmqctl list_exchanges -p "/mcollective" Listing exchanges ... direct amq.direct direct amq.fanout fanout amq.headers headers amq.match headers amq.rabbitmq. trace topic amq.topic topic ...done. 设置后更新配置 1 2 3 4 5 6 7 8 9 10 11 12 [root@linuxmaster1poc ~]# rabbitmqctl list_exchanges -p "/mcollective" Listing exchanges ... direct amq.direct direct amq.fanout fanout amq.headers headers amq.match headers amq.rabbitmq. trace topic amq.topic topic mcollective_broadcast topic mcollective_directed direct ...done. 备注:可参考官网设置https://www.rabbitmq.com/man/rabbitmqctl.1.man.html 二、配置MCollective: 1.配置mcollective client端 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [root@linuxmaster1poc testing]# cat /etc/mcollective/client.cfg topicprefix = /topic/ main_collective = mcollective collectives = mcollective libdir = /usr/libexec/mcollective logger_type = console #loglevel = debug loglevel = warn # Plugins securityprovider = psk plugin.psk = a36cd839414370e10fd281b8a38a4f48 direct_addressing = 1 connector = rabbitmq plugin.rabbitmq.vhost = /mcollective #虚拟主机 plugin.rabbitmq.pool.size = 2 #设置地址池里有两个mq plugin.rabbitmq.initial_reconnect_delay = 0.01 plugin.rabbitmq.max_reconnect_delay = 30.0 #重连时间 plugin.rabbitmq.use_exponential_back_off = true plugin.rabbitmq.back_off_multiplier = 2 plugin.rabbitmq.max_reconnect_attempts = 0 plugin.rabbitmq.randomize = false plugin.rabbitmq.timeout = - 1 plugin.rabbitmq.pool. 1 .host = 192.168 . 100.120 plugin.rabbitmq.pool. 1 .port = 61613 plugin.rabbitmq.pool. 1 .user = mc_rabbitmq plugin.rabbitmq.pool. 1 .password = 123 .com plugin.rabbitmq.pool. 1 .ssl = false plugin.rabbitmq.pool. 2 .host = 192.168 . 100.121 plugin.rabbitmq.pool. 2 .port = 61613 plugin.rabbitmq.pool. 2 .user = mc_rabbitmq plugin.rabbitmq.pool. 2 .password = 123 .com plugin.rabbitmq.pool. 2 .ssl = false # Facts factsource = yaml plugin.yaml = /etc/mcollective/facts.yaml 2.配置mcollective server端 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 [root@linux57poc tmp]# cat /etc/mcollective/server.cfg # --Global-- topicprefix = /topic/ main_collective = mcollective collectives = mcollective libdir = /usr/libexec/mcollective logfile = / var /log/puppet/mcollective.log loglevel = info daemonize = 1 # --rabbitmq Plugins-- securityprovider = psk plugin.psk = a36cd839414370e10fd281b8a38a4f48 direct_addressing = 1 connector = rabbitmq plugin.rabbitmq.vhost = /mcollective plugin.rabbitmq.pool.size = 2 plugin.rabbitmq.initial_reconnect_delay = 0.01 plugin.rabbitmq.max_reconnect_delay = 30.0 plugin.rabbitmq.use_exponential_back_off = true plugin.rabbitmq.back_off_multiplier = 2 plugin.rabbitmq.max_reconnect_attempts = 0 plugin.rabbitmq.randomize = false plugin.rabbitmq.timeout = - 1 plugin.rabbitmq.pool. 1 .host = 192.168 . 100.120 plugin.rabbitmq.pool. 1 .port = 61613 plugin.rabbitmq.pool. 1 .user = mc_rabbitmq plugin.rabbitmq.pool. 1 .password = 123 .com plugin.rabbitmq.pool. 1 .ssl = false plugin.rabbitmq.pool. 2 .host = 192.168 . 100.121 plugin.rabbitmq.pool. 2 .port = 61613 plugin.rabbitmq.pool. 2 .user = mc_rabbitmq plugin.rabbitmq.pool. 2 .password = 123 .com plugin.rabbitmq.pool. 2 .ssl = false # --Puppet provider specific options-- plugin.service.provider = puppet plugin.service.puppet.hasstatus = true plugin.service.puppet.hasrestart = true plugin.puppet.command = puppet agent plugin.puppet.splay = true plugin.puppet.splaylimit = 30 plugin.puppet.config = /etc/puppet/puppet.conf # --Facts-- factsource = yaml ##factsource = facter plugin.yaml = /etc/mcollective/facts.yaml 三、高可用测试 特别注意:节点mcollective的server.cfg中pool是有优先级的,默认数字小的生效,这点需要注意,也就是说当所有节点都连接在MQ2上的时候,启动MQ1,mco命令是无法使用的,因为它在运行的时候连接的是MQ1,而所有节点都连接在MQ2上。 1.停止MQ1,查看切换状态 1.1先看当前的节点连接状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [root@linuxmaster1poc ~]# mco ping #查看连接的节点 linux57poc time= 69.46 ms linux58poc time= 70.05 ms linux64poc time= 70.59 ms ---- ping statistics ---- 3 replies max: 70.59 min: 69.46 avg: 70.03 [root@linuxmaster1poc ~]# mco shell "lsof -i:61613" #查看所有节点监听的端口情况,可以看到目前都连接在linuxmaster1poc上。 Do you really want to send this command unfiltered? (y/n): y Discovering hosts using the mc method for 2 second(s) .... 3 Host: linux64poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 36625 root 6u IPv4 27771 0t0 TCP linux64poc: 40493 ->linuxmaster1poc: 61613 (ESTABLISHED) Host: linux58poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 11060 root 6u IPv4 34046 0t0 TCP linux58poc: 36295 ->linuxmaster1poc: 61613 (ESTABLISHED) Host: linux57poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 18076 root 6u IPv4 1351365 TCP linux57poc: 24698 ->linuxmaster1poc: 61613 (ESTABLISHED) [root@linuxmaster1poc ~]# /etc/init.d/rabbitmq-server stop Stopping rabbitmq-server: rabbitmq-server. 1.2再次运行mco查看切换状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [root@linuxmaster1poc ~]# mco ping linux58poc time= 73.54 ms linux64poc time= 74.61 ms linux57poc time= 75.39 ms ---- ping statistics ---- 3 replies max: 75.39 min: 73.54 avg: 74.51 [root@linuxmaster1poc ~]# mco shell "lsof -i:61613" Do you really want to send this command unfiltered? (y/n): y Discovering hosts using the mc method for 2 second(s) .... 3 Host: linux58poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 11060 root 6u IPv4 34046 0t0 TCP linux58poc: 36295 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 11060 root 9u IPv4 34137 0t0 TCP linux58poc: 47200 ->linuxmaster2poc: 61613 (ESTABLISHED) Host: linux64poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 36625 root 6u IPv4 27771 0t0 TCP linux64poc: 40493 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 36625 root 8u IPv4 27877 0t0 TCP linux64poc: 37472 ->linuxmaster2poc: 61613 (ESTABLISHED) Host: linux57poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 18076 root 9u IPv4 1351484 TCP linux57poc: 9309 ->linuxmaster2poc: 61613 (ESTABLISHED) 通过日志查看 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 [root@linuxmaster1poc ~]# mco shell "lsof -i:61613" Do you really want to send this command unfiltered? (y/n): y Discovering hosts using the mc method for 2 second(s) .... 3 Host: linux58poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 11428 root 6u IPv4 34283 0t0 TCP linux58poc: 36300 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 11428 root 8u IPv4 34338 0t0 TCP linux58poc: 47205 ->linuxmaster2poc: 61613 (ESTABLISHED) Host: linux57poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 18447 root 6u IPv4 1351559 TCP linux57poc: 59343 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 18447 root 8u IPv4 1351622 TCP linux57poc: 29757 ->linuxmaster2poc: 61613 (ESTABLISHED) Host: linux64poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 37054 root 4u IPv4 28036 0t0 TCP linux64poc: 37476 ->linuxmaster2poc: 61613 (ESTABLISHED) ruby 37054 root 6u IPv4 27990 0t0 TCP linux64poc: 40497 ->linuxmaster1poc: 61613 (CLOSE_WAIT) 总结:可以看到之前的连接已经变成CLOSE_WAIT,新的连接被建立 2.停止MQ2,启动MQ1查看切换状态 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 [root@linuxmaster2poc rabbitmq]# /etc/init.d/rabbitmq-server stop Stopping rabbitmq-server: rabbitmq-server. [root@linux57poc service]# lsof -i: 61613 COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 18447 root 6u IPv4 1351559 TCP linux57poc: 59343 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 18447 root 8u IPv4 1351622 TCP linux57poc: 29757 ->linuxmaster2poc: 61613 (CLOSE_WAIT) [root@linux58poc ~]# lsof -i: 61613 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 11428 root 6u IPv4 34283 0t0 TCP linux58poc: 36300 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 11428 root 8u IPv4 34338 0t0 TCP linux58poc: 47205 ->linuxmaster2poc: 61613 (CLOSE_WAIT) [root@linux64poc ~]# lsof -i: 61613 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 37054 root 4u IPv4 28036 0t0 TCP linux64poc: 37476 ->linuxmaster2poc: 61613 (CLOSE_WAIT) ruby 37054 root 6u IPv4 27990 0t0 TCP linux64poc: 40497 ->linuxmaster1poc: 61613 (CLOSE_WAIT) [root@linuxmaster1poc ~]# /etc/init.d/rabbitmq-server start Starting rabbitmq-server: SUCCESS rabbitmq-server. 根据plugin.rabbitmq.maxreconnectdelay =30.0,需要过最多30秒,mcollective服务端会重新建立连接请求 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 [root@linuxmaster1poc ~]# tailf / var /log/rabbitmq/rabbit\@linuxmaster1poc.log =INFO REPORT==== 24 -Dec- 2013 :: 11 : 00 : 45 === accepting STOMP connection < 0.332 . 0 > ( 192.168 . 100.126 : 36316 -> 192.168 . 100.120 : 61613 ) =INFO REPORT==== 24 -Dec- 2013 :: 11 : 00 : 45 === accepting STOMP connection < 0.348 . 0 > ( 192.168 . 100.125 : 18945 -> 192.168 . 100.120 : 61613 ) =INFO REPORT==== 24 -Dec- 2013 :: 11 : 00 : 45 === accepting STOMP connection < 0.382 . 0 > ( 192.168 . 100.127 : 40513 -> 192.168 . 100.120 : 61613 ) [root@linuxmaster1poc ~]# mco ping linux58poc time= 70.60 ms linux57poc time= 71.32 ms linux64poc time= 111.56 ms ---- ping statistics ---- 3 replies max: 111.56 min: 70.60 avg: 84.49 [root@linuxmaster1poc ~]# mco shell "lsof -i:61613" Do you really want to send this command unfiltered? (y/n): y Discovering hosts using the mc method for 2 second(s) .... 3 Host: linux58poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 11428 root 6u IPv4 34283 0t0 TCP linux58poc: 36300 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 11428 root 8u IPv4 34338 0t0 TCP linux58poc: 47205 ->linuxmaster2poc: 61613 (CLOSE_WAIT) ruby 11428 root 10u IPv4 34444 0t0 TCP linux58poc: 36316 ->linuxmaster1poc: 61613 (ESTABLISHED) Host: linux57poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME ruby 18447 root 10u IPv4 1351723 TCP linux57poc: 18945 ->linuxmaster1poc: 61613 (ESTABLISHED) Host: linux64poc Statuscode: 0 Output: COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME ruby 37054 root 4u IPv4 28036 0t0 TCP linux64poc: 37476 ->linuxmaster2poc: 61613 (CLOSE_WAIT) ruby 37054 root 6u IPv4 27990 0t0 TCP linux64poc: 40497 ->linuxmaster1poc: 61613 (CLOSE_WAIT) ruby 37054 root 9u IPv4 28206 0t0 TCP linux64poc: 40513 ->linuxmaster1poc: 61613 (ESTABLISHED) 本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1344492,如需转载请自行联系原作者

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

安全、稳定、可靠甲骨文定义PaaS新时代

目前云计算的部署已经覆盖所有行业,企业对于云计算的接受度、信任度,相比于前几年已经有明显的增长。根据甲骨文对未来十年云计算愿景的预测,到了2025年,80%的生产应用将会在云端上,100%的新应用开发测工作将在云计算环境下完成,包括集成开发环境、移动开发、SOA开发、数据库开发工具等。 根据IDC的研究报告,企业在SaaS和PaaS的投资比在传统软件上的增长速度要快得多,企业需求将助长PaaS技术的变革,带动PaaS市场以每年27%的高速增长。然而,根据甲骨文的市场观察,云计算的讨论热点集中在SaaS和IaaS,只从SaaS谈云计算容易忽略了企业订制化应用的需求;单从租用硬件资源的IaaS层面来看,云计算还是无法解决本地部署(on premise)产生信息孤岛的问题。这些现象都显示平台层的重要性还未被体现出来,且PaaS的底层开发技术门槛比较高,因此和SaaS、IaaS相比,目前PaaS还在初期发展阶段。 PaaS技术助力企业迈向数字化转型 IDC预测,预计到了2020年,全球智能手机和平板电脑将达到300亿台,这些设备的使用将推动物联网的发展,新的多渠道数字体验业务模式势必也将更强烈冲击传统商业模式,企业向数字化转型(digital transformation)已经成为锐不可档的趋势。因此,企业对于云计算的需求已经不仅在于部署云解决方案,订制化的需求已经越来越明显。 甲骨文公司中间件产品管理副总裁邹晓兵表示:"数字化转型的趋势包含移动、社交、大数据、物联网,背后需要具备高效和高度业务敏捷性的云技术支撑。PaaS在云计算中担任开发平台的角色,提供数据管理、应用开发、商务智能、系统管理、移动等广泛的功能,同时能将云上的应用实现订制化,对整合IT架构起到重要的技术支撑作用。" ▲图:甲骨文公司中间件产品管理副总裁邹晓兵 甲骨文发挥PaaS技术优势,定义PaaS新时代 甲骨文公司副总裁及中国区中间件产品事业部总经理晏翔表示:"混合云是大势所趋,而平台云则会是混合云的核心。甲骨文在数据库和中间件拥有强大的技术优势,能帮助企业在私有云和公有云之间透明移动负载、无缝切换,不仅提供真正面向企业应用的混合云服务,更有能力定义未来PaaS的技术发展。" 甲骨文的PaaS技术能够让客户将公有云及私有云作为一个统一的系统,无论企业的应用是部署在公有云或是私有云上,都能从操作管理等方面都能实现透明、无缝的迁移。在PaaS领域,将持续引领Java Cloud、Mobility Cloud以及数据库即服务、等平台服务的发展和创新。 ▲图:甲骨文公司副总裁及中国区中间件产品事业部总经理晏翔 重要的Oracle PaaS云产品包括: "Oracle云平台(Oracle Cloud Platform)是全面、集成的一体化套件服务,其所提供的云服务(SaaS、PaaS和IaaS)比任何其它公司都要多,包括应用开发、业务分析、内容与协作、数据管理、集成、移动和IT管理云服务。 2015年Oracle云平台增加多项新服务,包括Oracle数据库云服务(Oracle Database Cloud-Exadata)、Oracle归档存储云服务(Oracle Archive Storage Cloud)、Oracle大数据云服务(Oracle Big Data Cloud)、Oracle集成云服务(Oracle Integration Cloud)、Oracle移动云服务(Oracle Mobile Cloud)、Oracle流程云服务(Oracle Process Cloud)。同时,Oracle云平台升级面向JavaScript和Java开发人员的开发框架,包括Oracle Application Container Cloud、Oracle开发人员云服务(Oracle Developer Cloud Service)、Oracle JavaScript扩展工具包(Oracle JavaScript Extension Toolkit)、Oracle应用开发框架(Oracle Application Development Framework)、Oracle移动应用框架(Oracle Mobile Application Framework)等,扩展了面向开发人员的产品线。 "Oracle数据可视化云服务(Oracle Data Visualization Cloud Service)具备全新绝佳的可视化界面,为每一位商业用户提供丰富、功能强大的可视化分析功能,企业内不同部门的人仅需点击几下就能整合并分析企业、个人数据或大数据,能快速、有效地从杂乱的数据中发现其中隐藏的规律和可执行的洞察,即使没有专业的IT资源,仍能实现快速的数据评估和投资回报率的增长。 最新发布云计算产品Oracle Cloud Machine Oracle Cloud Machine是目前市场上最新的云平台产品,也是第一个由重要公有云供应商推出的本地部署堆栈,可以实现与Oracle云的100%兼容,科用于多种用途,包括灾难恢复、弹性爆发、开发/测试、直接迁移工作负载,用于开发运营的单一一个应用程序接口和脚本工具包。 ▲图:Oracle Cloud Machine 基础架构:提供弹性计算、弹性块存储、虚拟网络、文件存储、消息和身份管理功能,可将甲骨文和非甲骨文工作负载迁移至云端。甲骨文也将很快地推出其它IaaS服务,包括容器(Containers)和弹性负载均衡器(Elastic Load Balancer)。 数据管理:Oracle数据库云可让客户使用业界排名第一的数据库,在云端管理数据基础架构。继推出数据库云服务之后,甲骨文还将推出可实现极高性能的Oracle数据库即服务Exadata(Oracle Database as a Service-Exadata)的和多种大数据云服务,包括大数据发现(Big Data Discovery)、大数据准备(Big Data Preparation)、Hadoop和大数据SQL(Big Data SQL)。 应用开发:能使用Oracle Java云在云端开发并部署Java应用,未来很快还将推出用于多语言开发的其它服务,包括JavaSE、Node.Js、Ruby和PHP。 企业集成:Oracle集成云(Oracle Integration Cloud)服务能简化本地部署与云应用以及云应用之间的集成。另外,甲骨文也将很快推出针对服务导向架构(SOA)、应用接口管理和物联网的更多功能。 管理:无缝地整合本地部署和Oracle云之间管理工作负载的使用体验。 原文发布时间为:2016年6月17日 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网。

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

Gartner预测2016年全球IT支出将保持稳定

全球领先的信息技术研究和顾问公司Gartner预测,2016年全球IT支出将维稳在3.41万亿美元的水准(参见表一),高于上季度全年0.5%负增长的预测,而股市的持续波动是造成此差异的主要原因。 Gartner研究副总裁John-David Lovelock表示:“最近一期Gartner全球IT支出预测(Gartner Worldwide IT Spending Forecast)的内容是建立在英国不会脱离欧盟的假设上。英国决定脱欧后将很有可能降低企业的信心与产品价格上扬的空间,这都会给英国、西欧与全球的IT支出带来冲击。” 虽然英国已经步入改变的进程,但具体的方向及内容仍不明确。“脱欧”的公投结果很快会对英国与欧洲地区的IT支出产生影响,其他方面的改变则需要比较长的时间。人力的雇用可能是最主要且急迫的课题,长期就业前景的不确定性将降低英国对外籍劳工的吸引力。留住现有的非英国籍员工,以及从外国雇用合格新员工的机会受限,都将影响英国的IT部门。 新型替代选项打乱既有市场 John-David Lovelock还指出:“2016年是开始出现二分现象的一年。未来IT变革的步调将永远不会像现在这样慢,但全球IT支出增长率却呈现原地踏步的趋势。2016年是企业开始将焦点转向数字化业务、物联网,甚至是算法业务的一年。为了替这些新项目筹措资金,许多企业开始借由新形态数字替代方案进行成本优化,例如以软件即服务(SaaS)代替授权软件,以LTE网络语音通话(VoLTE)代替手机,或者以个人数字助理(DPA)取代人力,借此节省经费、简化营运并加速价值获取。正因为传统IT有了更多新的替代方案,未来从采购内容、采购者以及采购金额等方面都将从根本产生变化。” Gartner全球IT支出预测报告为主流科技趋势的指标性研究报告,范围横跨硬件、软件、IT服务与电信市场。全球IT与业务主管都利用这份季报了解市场商机与挑战,并根据报告中业经认证的方法做出商业决策、避免凭空猜测。 表一:全球IT支出预测(单位:10亿美元) 2015年支出金额 2015年增长率 2016年支出金额 2016年增长率 数据中心系统 171,213 2.9% 174,578 2.0% 软件 313,948 1.1% 332,207 5.8% 设备 662,295 -4.6% 627,235 -5.3% IT服务 865,818 -3.4% 897,634 3.7% 通讯服务 1,400,049 -9.2% 1,380,782 -1.4% 整体IT支出 3,413,324 -5.5% 3,412,436 0.0% 资料来源:Gartner(2016年7月) 2016年数据中心系统支出预计将达到1,740亿美元,较2015年增加2%。市场驱动力主要为大中华区与西欧服务器市场的强劲增长势头,以及北美企业级网络设备市场进入换机高峰期。 全球企业软件支出有望达到3,320亿美元,较2015年增加5.8%。北美是拉动增长的主力地区,在2016年所增加的240亿美元支出当中,就有116亿来自这个地区。若以市场细分,增长最快的市场仍然是客户关系管理(CRM)软件。 设备支出到2016年底预计将达到6,270亿美元。俄罗斯、日本与巴西经济的停滞将拖累设备需求及全球个人电脑(PC)市场复苏的脚步。此外,Windows 10的推出也进一步导致消费者延后购买PC的状况;在升级Windows 10后,消费者将愿意继续使用旧有PC。 IT服务市场相关支出与望增加3.7%,达到8,980亿美元。日本是IT服务支出增长最快的地区,增长率为8.9%。由于数字化业务计划持续上涨,日本企业正逐渐认识到要想使业务成功转型,必须得向顾问公司寻求相关新技术的建议。最重要的是,现在日本企业已经了解了这些服务的真正价值,愿意购买此类服务。 2016年通讯服务支出预计将达到1.38万亿美元,较2015年下滑1.4%。日本是通讯服务增长最快的地区,增长率为8.3%,大中华区则是支出金额增加最多的地区,达83亿多美元。东欧、西欧与北美则因为通讯服务市场全面受到价格战及使用率下滑的影响,相关支出金额预计将出现下滑。 中国地区,Gartner预测其IT支出将超过2.3万亿人民币,较2015年增加2.6%。但由于汇率波动,当以美元计算时将呈现下滑趋势。 表二:中国IT支出金额(单位:百万人民币) 地区 细分市场 2015年 2016年 中国 设备 772,745 752,228 数据中心系统 130,279 142,949 软件 55,199 60,106 IT服务 103,418 112,084 通讯服务 1,095,264 1,145,874 总计 2,156,904 2,213,240 原文发布时间为:2016年7月6日 本文来自云栖社区合作伙伴至顶网,了解相关信息可以关注至顶网

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

使用iosMonkey脚本测试iOS应用的稳定

Ynm3k的iosMonkey脚本 Ynm3k是基于官方提供的UI Automation扩展的 自动化测试框架。 它的基本架构和功能参见 http://wenku.baidu.com/view/a513c2779b6648d7c1c746d3.html 这里只阐述其中iosMonkey.js脚本的使用, 使用步骤: 1、打开instruments,左侧选择设备(是真机还是模拟器),然后选择Automation工具 2、选择target 3、导入脚本 4、运行设置 导入后选择脚本编辑界面 在脚本末尾有运行设置项,如图 表明了允许随机的一些操作(点击、滑动、双击、晃动、音量加减、锁屏),及点击频率和点击次数,上图是每0.5秒点击一次,最多点击30W次。 5、点击record,开始运行。 注意事项: 1、真机连接时,若出现设备是灰色不可选, 是因为该设备没有在xcode里设置use for development,在这里给设备安装开发证书和设置 2、该脚本是基于坐标的点击,为了不让误点状态栏或下拉出通知栏导致会切换到其他应用,建议将工具栏区域在可点范围内去掉。可在脚本此处做如下修改: 上图显示的设备左上角原点纵坐标加50像素,可点区域高度减50像素, 最新内容请见作者的GitHub页:http://qaseven.github.io/

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

vfox 插件上新: PHP 插件来啦, 稳定可用~🎉🎉

vfox:https://github.com/version-fox/vfox 插件仓库:https://github.com/version-fox/vfox-php 快速开始 # 安装插件 vfox add php # 查看可用版本 vofx search php # 安装指定版本 vfox install php@8.3.3 vfox use php # -g 全局有效 -p 项目有效 -s 当前shell内有效 Windows环境下 Unix环境下(支持编译, 随意修改拓展) 具体请看:https://github.com/version-fox/vfox-php/blob/main/bin/install

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

Bee+SpringBoot 稳定的 Sharding、Mongodb ORM 功能(同步 Maven)

Hibernate/MyBatis+ plus +Sharding JDBC + Jpa+ Spring data+ GraphQL+ App ORM (Android, 鸿蒙)=Bee 小巧玲珑!仅 860K, 还不到 1M, 但却是功能强大! V2.2 (2024春节・LTS 版) 1.Javabean 实体支持继承 (配置 bee.osql.openEntityCanExtend=true) 2. 增强批量插入与事务的关联 2.2 之前,调用批量插入在每个批都会提交 commit, 但在 2.2 改为只调用一次且在事务中,在批量插入的方法内容不再提交,而由事务控制。扣群:992650213 3.fixed bug: 1) Condition 使用 Op.in 时,参数为 null 时会报异常 2) 分片批量插入上下文相关的 bug 3) 仅分库时,解决上下文问题 4) 分片时,主线程的上下文要清除 5).InheritableThreadLocal 与 parallelStream () 不兼容的 bug, 当不是分片模式时,可以用 parallelStream (), 而分片时则不建议使用 parallelStream () gradle(short) implementation 'org.teasoft:bee-spring-boot:2.2' gradle implementation group: 'org.teasoft', name: 'bee-spring-boot', version: '2.2' maven: <dependency> <groupId>org.teasoft</groupId> <artifactId>bee-spring-boot</artifactId> <version>2.2</version> </dependency> 一文搞懂数据库分片:分库分表,只分库不分表,只分表不分库... https://my.oschina.net/u/4111850/blog/10759889 支持各种分片模式: 1. 分库分表 2. 仅分库 3. 仅分表 4. 使用日期的字段作为分片键 5. 不规则,通过自定义设置映射 自动生成 Spring Boot 后端微服务代码,几秒钟即可完成,秒杀 GPT. https://gitee.com/automvc/gencode 下期功能预告: Bee 已经是一个功能很齐全的 ORM 啦,你还想添加什么功能,请到评论区告诉我们.扣群 (992650213)! 项目首页: https://gitee.com/automvc/bee https://github.com/automvc/bee https://gitee.com/automvc/bee-springboot

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

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部分的功能。

用户登录
用户注册