Bluemix 之云数据库 ClearDB 原理与应用实践-阿里云开发者社区

开发者社区> 数据库> 正文

Bluemix 之云数据库 ClearDB 原理与应用实践

简介: 随着科技的发展,企业对运营成本、开发部署周期、数据安全性可用性的要求不断提高,很多应用已经选择发布到云平台,数据库采用云端的数据库,有效地统一内存和存储,以加速服务器性能,以解决工作负载变动。重新获得可预测的计算基础架构以处理当前和未来的工作负载需求,当集成到现有计算基础架构上时,工作负载密度增加高达8倍。

随着科技的发展,企业对运营成本、开发部署周期、数据安全性可用性的要求不断提高,很多应用已经选择发布到云平台,数据库采用云端的数据库,有效地统一内存和存储,以加速服务器性能,以解决工作负载变动。重新获得可预测的计算基础架构以处理当前和未来的工作负载需求,当集成到现有计算基础架构上时,工作负载密度增加高达8倍。IT团队现在可以选择通过租赁资产在较少的服务器或云实例上整合工作负载,并避免在基础设施服务器,存储和运营成本上的花费。而且可以减少或消除对现有或未来企业许可证的需求。

为什么选择ClearDB?

ClearDB是一种更快,更强,更安全,更可靠的方式来获取数据到您的MYSQL应用程序,无论您(或您的应用程序)在世界哪里。

总体结构
ClearDB在故障的前提下设计,以便为您的MYSQL驱动的应用程序提供真正的高可用性和低延迟性能。
计划备份
您的数据库支持多个区域和多个时区,以确保您的数据可用。
您还可以使用备份管理工具创建即时备份或还原现有备份。
高度安全
无论您的数据是在数据库中,在线上还是备份中,都是加密的,以保持信息的安全。
我们不会对您的信息感兴趣。
您还可以通过SSL证书加密您的连接。
持续监控
我们的团队每周24小时监控您的数据库,每周7天,以确保它始终可用和安全。
简单有效的工具
我们的图形工具使您能够轻松地对重要数据库统计信息进行快速分析
我们还可以轻松访问只需点击鼠标即可恢复的备份。
简易管理API
直接挂接到ClearDB的管理API中,以自动执行备份操作并获取有关数据库的实时状态信息。

ClearDB工作原理

ClearDB在为您的应用程序提供完全冗余的解决方案,可以为中断服务,网络故障甚至自然灾害提供重要的地区,在多重复制MySQL配置中创建多主机和多主机。
您选择需要多少计算能力和存储空间,然后将其全部设置给您,以便您拥有最适合您需求的安全,强大和可靠的MySQL数据库。

在底层,ClearDB使用高级复制技术,高级集群技术和分层Web服务的组合,为您提供比平常“更智能”的MySQL数据库。
还使用混合二进制复制日志记录和自动递增偏移种子,以便您可以继续使用MySQL的非确定性和基于时间的函数,如UUID(),NOW()以及表中的自动递增键。


通讯和磁盘安全
可以使用由服务器和客户端证书签名的256位SSL加密来加密客户端和数据库节点之间的通信。
还加密了所有的数据库备份,以便在数据库出来之前保护数据的安全。

副本无处不在
ClearDB的master0master配置提供的所有副本都使用相同的二进制日志记录格式进行操作,并使您的数据库能够无限制地扩大所需的副本数。您可以在任何AWS可用区域或AZURE区域中拥有多个副本,以确保数据可用性。
ClearDB就在隔壁
ClearDB主控和副本节点被配置为紧邻应用程序,消除了延迟问题。
这使您能够利用云中的本地“私有”网络,这些网络比通过Internet运行数据库要快得多。

Bluemix 上的ClearDB

Bluemix 上的ClearDB Managed MySQL Database服务是由第三方提供的并接入的。

接入原理:

在技​​术上,为了向Bluemix添加服务,需要开发,托管和注册服务代理。
CloudFoundry定义了一个服务代理API,它定义了如何管理服务代理。
但是这些API并不是第三方直接使用的。
相反,IBM与AppDirect合作,允许开发人员只写一个服务代理并将其部署到各种平台:
“AppDirect提供了唯一的云服务交付平台,超过了最为成熟的按需服务分销渠道提供的功能,如Google应用市场,Salesforce Appexchange和Apple App Store。”
实现服务代理是简单明确的,实质上您只需要实现以下REST API:

  • 返回目录中显示的服务描述和计划
  • 创建一个新的服务实例:这通常是创建用户帐户,资源被保存等等。
  • 将服务实例绑定到(a)特定应用程序:这是将服务的凭据传递给应用程序的位置
  • 取消绑定和删除服务实例
  • 当从Bluemix调用服务的仪表板时,提供单点登录

创建 ClearDB 数据库服务

1、登录国际版 Bluemix 打开目录页面;

2、可以通过左侧的类别快速定位,找到 ClearDB Managed MySQL Database,点击它;


3、输入服务名称,或者可以保持默认的;

4、在左侧连接到下拉列表中选择要连接的Java应用程序;

提示:只有连接到一个应用程序,才能拿到服务的访问凭据。


5、点击创建按钮;

ClearDB 服务管理

服务创建成功后,会进入服务详细信息页面;如下图:


你可以点击右侧的菜单,查看文档,重命名服务或者删除服务。

点击:打开 CLEARDB MANAGED MYSQL DATABASE 仪表板进入ClearDB 服务的仪表板页面。

可以看到已有的数据库列表,如下图:

如果您想查看有关特定数据库的更多详细信息,请单击其名称。


向下滚动页面,可以看到:

管理您的数据库

如果要在ClearDB数据库中管理表,数据和其他设置,建议您使用常用的图形工具,如Oracle的MySQL Workbench,用于Mac OS X的Sequel Pro或Navicat。您还可以使用任何捆绑的MySQL工具,如mysql和mysqldump命令行实用程序。SSL证书

强烈建议您使用SSL加密与ClearDB的服务来加密您的应用程序和您的ClearDB数据库之间的通信。您使用哪些证书取决于您正在使用的编程语言。需要帮忙?查看SSL连接指南,了解如何开始使用。


ClearDB 连接管理

进入服务详细信息页面,点击左侧菜单的连接,可以查看已经连接的应用程序或创建新的连接;


创建新的连接

点击右上角的“创建连接按钮”


选择一个已经存在的应用程序,然后点击“连接”按钮。

使用客户端工具管理ClearDB 数据库

应用程序和数据库服务已经创建完成了,并且我们选择将数据库服务连接到Java应用程序,这时我们可以打开Java应用程序的详细信息页面,获取数据库访问凭据;

1、点击左上角的菜单,选择仪表板,进入仪表板页面;


2、找到刚刚创建的应用程序,点击空白处;


3、点击左侧的“连接”,然后点击右侧的查看凭证;


4、复制凭证到一个文本文件中,方便使用;


完整的凭据示例:

{
  "cleardb": [
    {
      "credentials": {
        "jdbcUrl": "jdbc:mysql://us-cdbr-sl-dfw-01.cleardb.net/ibmx_ea6d0796680534e?user=b8370b2ea2c12b&password=08b457af",
        "uri": "mysql://b8370b2ea2c12b:08b457af@us-cdbr-sl-dfw-01.cleardb.net:3306/ibmx_ea6d0796680534e?reconnect=true",
        "name": "ibmx_ea6d0796680534e",
        "hostname": "us-cdbr-sl-dfw-01.cleardb.net",
        "port": "3306",
        "username": "b8370b2sea2sc12b",
        "password": "08b45s7asf"
      },
      "syslog_drain_url": null,
      "label": "cleardb",
      "provider": null,
      "plan": "cb5",
      "name": "ClearDB Managed MySQL Database-l0",
      "tags": [
        "Data Stores",
        "DBA",
        "(S) Cloud",
        "(P) Analytics",
        "Bluemix",
        "Platform",
        "ibm_dedicated_public",
        "Infrastructure",
        "Service",
        "data_management",
        "IT Operations",
        "web and app",
        "ibm_third_party"
      ]
    }
  ]
}

5、使用Navicat for MySQL 连接到ClearDB;


主机名或IP地址对应凭证中的:hostname;

6、新建查询,初始化数据表;


执行的SQL语句如下:

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
--  Table structure for `user`
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `NAME` varchar(30) NOT NULL COMMENT '用户名',
  `PASSWORD` varchar(32) NOT NULL COMMENT '用户密码',
  `MOBILE` varchar(20) NOT NULL COMMENT '手机号码',
  `EMAIL` varchar(50) NOT NULL COMMENT '电子邮件',
  `STATUS` tinyint(4) NOT NULL DEFAULT '0' COMMENT '用户状态,默认为0,不可用,1为可用\r\n 0: 表示新建\r\n1:表示激活\r\n2:表示禁用\r\n3:表示删除\r\n',
  `TRUE_NAME` varchar(50) DEFAULT NULL COMMENT '真实姓名',
  `USER_CODE` varchar(50) DEFAULT NULL COMMENT '用户编码',
  `PHOTO` varchar(100) DEFAULT NULL COMMENT '头像相对路径',
  `CREATE_TIME` datetime DEFAULT NULL COMMENT '创建时间',
  `UPDATE_TIME` datetime DEFAULT NULL COMMENT '最后修改时间',
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

-- ----------------------------
--  Records of `user`
-- ----------------------------
BEGIN;
INSERT INTO `user` VALUES ('1', 'admin', 'admin', '', '', '1', null, null, null, null, null);
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

在你已有的应用程序中使用ClearDB

要将您的应用程序使用的数据库改为ClearDB非常简单,您只需要修改数据库连接字符串就可以了。

1、修改jdbc.properties 文件,修改数据库链接凭证;

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://us-cdbr-sl-dfw-01.cleardb.net/ibmx_ea6d0796680534e?user=b8370b2ea2c12b&password=08ab4a57af
username=b8370ba2ea2c12b
password=08b457af
#定义初始连接数
initialSize=0
#定义最大连接数
maxActive=20
#定义最大空闲
maxIdle=20
#定义最小空闲
minIdle=1
#定义最长等待时间
maxWait=60000
#&character_set_server=utf8mb4&
jdbc链接字符串刚刚获取的凭证中已经给出;
2、本地运行服务测试;

访问:http://localhost:8080/ssmcleardb/webapi/user/findList.do  以看到下面的输出:


3、项目文件结构;


让你的应用在云上运行

1、打包应用程序,执行maven clear,maven install;

2、在项目的根目录创建应用程序清单文件;


内容如下:

applications:
- path: target/ssmcleardb.war
  memory: 512M
  instances: 1
  domain: mychinabluemix.net
  name: ssmcleardb
  host: ssmcleardb
  disk_quota: 1024M
path: target/ssmcleardb.war 就是应用程序打包后输出的路径名称;

name 就是应用程序的名称;

host 是一个二级域名的前缀,发布成功之后我们可以通过它来访问自己的应用;
3、下载安装CF命令行工具

具体细节请参考我的其它文章,如:Java中REST API使用示例——基于云平台+云服务打造自己的在线翻译工具

也可以参考文末给出的相关视频:一个简单应用程序的上云过程

4、发布应用程序



5、发布成功,访问测试:


我这里是将应用程序发布到了Bluemix 中国版上。

到这里可以看出,我没有使用刚刚在Bluemix上创建的Java应用程序名称,而是通过创建一个应用程序清单文件来创建了一个应用程序。

不要试图访问我发布的,做点小动作,偷笑

我提供了所有必要代码,可以到Github下载:https://github.com/ivu4e/ssmcleardb

结束语

通过本实践我们可以发现:基于 Bluemix 提供的云应用程序容器以及数据库服务,将现有的应用程序部署到云平台上,以及将数据库切换为云平台上的数据库服务,都非常的简单方便,您不需要做大的改动,就可以很轻松的拥有云平台带来的优势。

不需要担心扩展机架以吸收不断增长的服务器功率负载具有的功率和冷却​​限制。

并避免在基础设施服务器,存储和运营成本上的花费

相关学习资源

Bluemix 中国版 云服务登录: https://console.chinabluemix.net/

Bluemix 国际版 云服务登录: https://console.ng.bluemix.net/

Bluemix资源中心(中文):https://www.ibm.com/developerworks/cn/cloud/bluemix/
学习视频(中文):http://www.youku.com/playlist_show/id_22801997.html
专家答疑(中文) : https://developer.ibm.com/cn_answers

自学课程系列(英文): https://developer.ibm.com/courses/all-courses/category/learning-path/
Bluemix Q&A (英文): http://stackoverflow.com/questions/tagged/ibm-bluemix

相关视频

云服务助力Java 应用程序开发及部署


一个简单应用程序的上云过程


基于云应用的公众号后台程序开发


====================文档信息==================

版权声明:非商用自由转载-保持署名-注明出处

署名(BY) :testcs_dn(微wx笑)

文章出处:[无知人生,记录点滴](http://blog.csdn.NET/testcs_dn)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章