去年参加技术分享活动,七牛的一个技术简要的介绍了一些高可用可伸缩的一些经验之谈,听完之后受益匪浅,整理一下,主要分以下几个部分:
- 入口层高可用
- 业务层高可用
- 缓存层高可用
- 数据库高可用
- 入口层可伸缩
- 业务层可伸缩
- 缓存层可伸缩
- 数据库可伸缩
下面来分层介绍实践方法。
Coding changes the world
去年参加技术分享活动,七牛的一个技术简要的介绍了一些高可用可伸缩的一些经验之谈,听完之后受益匪浅,整理一下,主要分以下几个部分:
下面来分层介绍实践方法。
当你从c&c++转到一门具有垃圾回收功能的语言时,程序员的工作就会变得更加容易,因为你用完对象,他们会被自动回收,但是,java程序员真的不需要考虑内存泄露吗? 其实不然
服务提供者框架有三个重要组件
- 服务接口,这是提供者需要实现的
- 提供者注册接口,这是系统用来注册实现,让客户端访问他们的
- 服务访问接口,是客户端用来获取服务的市里的
这些构成了了服务提供者框架的基础。
下面举一个简单的例子
1 | /** |
1 | /** |
##1软件获取
从百度搜索 FileZilla Server,下载即可,此软件分为客户端和服务端,注意区分
##2软件安装
点击install完成安装
填写server address,也可以不写,密码无需设置,点击ok
当出现如上图所示的loggedon 表示ftp服务器已经开启
点击edit->users->general->add 填写用户名,添加一个用户,供第三方软件登录,然后点击enable account 设置密码,除用户名外,与下图保持一致即可,点击ok
点击shared floders ,为用户添加一个共享文件夹,用于传数据,如下图所示,F:\FtpTest为此用户的根目录,此目录下的所有文件和文件夹对此用户可见。文件和文件夹的权限可以自行配置,或者按照图中的对号进行勾选,点击ok
有三个超时时间,其他两个不加赘述,注意TimeOut settings,中间的no transfertimeout如果不为0,则表示一段时间不传输数据就会自动下线。可以理解为会话的保活时间
主要用于其他用户的操作记录和问题查看
转自http://www.51cto.com/specbook/17/35216.htm
在局域网中,管理员常常需要将某条信息发送给一组用户。如果使用一对一的发送方法,虽然是可行的,但是过于麻烦,也常会出现漏发、错发。为了更有效的解决这种组通信问题,出现了一种多播技术(也常称为组播通信),它是基于IP层的通信技术。为了帮助读者理解,下面将简要的介绍一下多播的概念。众所周知,普通IP通信是在一个发送者和一个接收者之间进行的,我们常把它称为点对点的通信,但对于有些应用,这种点对点的通信模式不能有效地满足实际应用的需求。例如:一个数字电话会议系统由多个会场组成,当在其中一个会场的参会人发言时,要求其它会场都能即时的得到此发言的内容,这是一个典型的一对多的通信应用,通常把这种一对多的通信称为多播通信。采用多播通信技术,不仅可以实现一个发送者和多个接收者之间进行通信的功能,而且可以有效减轻网络通信的负担,避免资源的无谓浪费。
最近在做一个大数据量缓存重传系统的优化,其中用到的sqlite技术,把自己的学习心得整理了一下。
SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite数据库由于其简单、灵活、轻量、开源,已经被越来越多的被应用到中小型应用中。因此在许多软件中例如(QQ,微信)等许多软件中都有广泛应用。
上篇介绍了sqlite3的一些常用插入操作方法和注意事项,在实际项目中遇到了图片缓存的问题,由于服务器不是很稳定,且受到外界环境的干扰(例如断电,图片存储挂掉,图片存储速度过慢,造成的接口调用失败等等),一个数据结构中除了普通字段(int string),还包括图片数据,所以还需要将图片数据进行缓存,图片缓存与普通的数据库字段值缓存有所不同,下面介绍一下简单方法。
此demo仅供学习使用。
sqlite3支持对二进制数据的缓存,在实际的编程开发当中我们经常要处理一些大容量二进制数据的存储,如图片、音乐、视频等等。对于这些二进制数据,我们不能像处理普通的文本那样,但是我们可以用blob来存储。sqlite官方文档https://www.sqlite.org/datatype3.html#section_1对blob 字段的解释是
BLOB. The value is a blob of data, stored exactly as it was input。
即数据不做任何转换,以输入形式存储。因此 BOLB通常用来存储二进制大对象。
前些日志看到一篇博文,关于C++单例模式下m_pinstance指向空间销毁问题,m_pInstance的手动销毁经常是一个头痛的问题,内存和资源泄露也是屡见不鲜,能否有一个方法,让实例自动释放。网上已经有解决方案(但是具体实现上表述不足,主要体现在自动析构未能正常运行),那就是定义一个内部垃圾回收类,并且在Singleton中定义一个此类的静态成员。程序结束时,系统会自动析构此静态成员,此时,在此类的析构函数中析构Singleton实例,就可以实现m_pInstance的自动释放。
突发奇想,刚好这学期刚上安卓课程,想设计一个时间助手。工作、学习中经常会被突如其来的电话所打扰,在上班,上课时这突如其来的铃声会惹来别人的反感,而只靠人们的记性是很难在准确的时间记得静音。如果一直静音,那么在休息时间又有可能漏接重要的电话。基于这种考虑,设计了这样一自动静音小助手,来帮助人们在忙碌的生活中定时静音,定时开启正常模式,简单方便。