互金平台灰度发布的三段式探索与实践

  categories:资料  author:

本文将从某互联网金融平台的线上版本发布工作出发,介绍了整个发布过程的优化及改造,以及对于灰度发布的探索及最终实践。

 

先要说明一点,任何脱离实际业务的技术工作都是耍流氓,技术需要服务于业务。因此,本文尽量淡化了业务方面的因素,聚焦于技术层面,建议在实际运用中还是要根据各自的业务场景去变化和调整。

 

其次,本文重点描述了线上发布的实施改造思路及演进过程,但对于其它相关联的一些点,比如发布规范流程、配置管理、监控、自动化工具的实施等不做过多涉及,如有兴趣可后续交流。

应用逻辑架构
 
 

 

图1 应用逻辑架构图

 

客户端
 

 

包含手机APP、Web页面(主站/营销站等)、H5页面等,即访问发起方,来自于真实用户。

 

WEB
 

 

主要实现转发功能,利用Nginx实现,同时包含一些业务策略和跳转设置。

 

BFE
 

 

Business Front End,业务前端,实现接入和业务聚合功能,有点类似于API网关,但和业务有一定耦合,用Tomcat war包发布。

 

APP
 

 

业务应用层,实现具体业务功能,目前几十个APP模块,用Tomcat war包发布。

 

Data
 

 

数据层,如数据库、缓存、分布式文件系统等。

 

公共组件
 

 

包含配置中心,任务调度中心,服务注册发现中心,消息队列等(这4个公共组件和灰度发布有一定关系,后续会单独介绍)。

 

注意:
  • WEB->BFE:通过Nginx反向代理转发流量,HTTP请求;
阅读全文

六款最佳Linux教育应用

  categories:资料  author:

位居榜首的是Edubuntu。顾名思义,Edubuntu是非常流行的Ubuntu发行版的一个变种,旨在让Ubuntu进入到广大教室。Edubuntu可能是最大名鼎鼎的专注于教育用户的Linux发行版。它名至实归,因为它随带大量的程序。目前的Edubuntu 14.04.2 LTS发行版非常庞大,占用空间达到2.9GB。Edubuntu提供了捆绑的教育软件,按照年级段分类,可以从软件中心来安装。捆绑的教育软件分门别类:学前、小学、中学和大学。Edubuntu建立在Ubuntu的基础上,所以安装起来就跟Ubuntu一样简单。它还有大量丰富的应用程序,因而对数学和科学有兴趣的人来说有很大的吸引力。

Edubuntu使用Unity桌面环境

2
UberStudent

   Uberstudent是另一款流行的Linux发行版,专注于教育领域,针对中学和大学进行了高度定制。Uberstudent同样建立在Ubuntu的基础上(Uberstudent 4.3基于Ubuntu 14.04.2 LTS),安装就跟安装Ubuntu一样简单直观。Uberstudent随带Xfce桌面环境,桌面环境来得无比简单。

Uberstudent本身就随带许多软件程序。Uberstudent较之Edubuntu的一个优势是软件组织。预安装的软件作了精心的分类,那样你很容易找到所要寻找的软件,相比Edubuntu凌乱的Unity桌面,更是如此。Uberstudent随带Zotero文献管理器,因而适合研究人员,这点再好不过了。尽管Edubuntu因Unity桌面而显得更精美,但使用Xfce桌面的Uberstudent在你系统上占用较少资源,哪怕在比较旧的硬件上也能顺畅运行。

Uberstudent的组织井然有序

3
openSUSE-Edu

如果Edubuntu和Uberstudent满足不了你的要求,你可以考虑一下openSUSE-Edu。openSUSE是另一款面向教育行业这个特定领域的发行版,功能很强大。它基本上可以满足学校从服务器到桌面的IT要求。连Live DVD都含有KIWI-LTSP服务器软件,很容易启用,用于演示。它还随带许多实用的应用程序,供学生、教师、IT管理员、甚至家长使用。openSUSE随带不同的桌面环境,包括GNOME、GNOME Classic、KDE Plasma和Mate。

OpenSUSE及Mate桌面

4
Skolelinux(教育版Debian)

   类似openSUSE-Edu,Skolelinux力求可以满足学校方方面面的IT要求。它本身随带70多个面向学校的应用程序。它还随带替代的桌面环境,包括LXDE和Mate等轻量级桌面环境和非常美观的KDE。

Skolelinux及KDE

5
KnoSciences

KnoSciences是一款基于Knoppix的发行版,它随带许多功能强大的Linux版免费应用程序。KnoSciences是一种可引导光盘系统,不需要安装到硬盘上,就能最大限度地使用它。它可以在Live模式下运行,性能非常出色。它随带多个Latex软件,包括非常流行的Lyx和Texmacs。

6

fedoraEDU

Fedora Education SIG(Edu SIG)力求优化Fedora,供教师和学生使用,无论是教育机构里面的师生还是外面的师生。该发行版随带许多教育应用程序,包括教学工具,比如用于屏幕播放的Wink和用于课程制作的Hot Potatoes,以及其他许多Web应用程序。它还随带许多针对特定年龄段的应用程序,比如gcompris(2岁以上)、sugar(6岁以上)和celestia(14岁以上)。FedoraEdu提供了一款实用的发行版,旨在推广开源教育软件的使用。

  

结束语

你很容易安装任何发行版来满足教育要求,但是如果想要一款直接就可以使用的发行版,本文介绍的这些发行版就能满足你的要求。Edubuntu和Uberstudent是最适合学生和教师的Linux发行版,Edubuntu的优点是它预先安装了大量的软件包,而Uberstudent的优点是教学组织使用这款软件轻松无忧。openSUSE-Edu可以满足学校从服务器到桌面的方方面面的IT要求。openSUSE-Edu还让你可以选择桌面环境,Skolelinux同样如此。KnoSciences不需要安装,就可以在Live磁盘上顺畅运行。之外还有fedoraEdu,这些是面向教育行业的其中几款发行版。所以,如果你在物色合适的一款,可以说选择多的是。… 阅读全文

什么是MEAN全堆栈javascript开发框架

  categories:资料  author:

使用JavaScript能够完整迅速做出Web应用程序,目前一套工具包括MongoDB、ExpressJS,AngularJS和Node.js越来越受到欢迎,其开发的灵活性和易用性加快开发效率,简化开发者的工作。

在今天你有很多架构可以选择建立一个Web应用,你需要的是快速开发,提高效率和注重健壮性,你需要的是更加精细更加敏捷的技术。

 

什么是MEAN?

MEAN是一个Javascript平台的现代Web开发框架总称,它是MongoDB + Express +AngularJS + NodeJS 四个框架的第一个字母组合。它与传统LAMP一样是一种全套开发工具的简称。

  • MongoDB是一个使用JSON风格存储的数据库,非常适合javascript。(JSON是JS数据格式)
  • ExpressJS是一个Web应用框架,提供有帮助的组件和模块帮助建立一个网站应用。
  • AngularJS是一个前端MVC框架。
  • Node.js是一个并发 异步 事件驱动的Javascript服务器后端开发平台。

在mongoDB中我们可以直接存储JSON格式的数据,然后在ExpressJS和的NodeJS服务器编写一个基于JSON的查询,并无缝地(无需像其他语言需要在JSON和语言数据模型之间转换)传递JSON到AngularJS前端。

同时,数据库调试和管理也变得轻松了许多,存储在数据库中的对象基本上等同于你在客户端看到的对象。更妙的是,前端工作人员也能够轻松了解后端代码和数据库查询,使用的是相同的语法和对象,你不必考虑多套语言的最佳实践,降低了入门门槛。

MEAN的架构原理如下图:

m01

相关工具:

  • NPM – NodeJS包管理器,类似Java的Maven。
  • Grunt – 一个Javascript任务运行器。

安装

两种安装方式:

  • 通过mean.io网站下载
    或通过git下载:git clone https://github.com/linnovate/mean.git
  • 使用Yeoman
    首先安装:npm
阅读全文

es6+angularjs+sass+gulp+browserify等组合的前端开发环境搭建

  categories:资料  author:

其实我一直是在基础设施和运维周边转,只是前段时间,因为公司前端都去忙项目去了,没空管基础设施的平台开发自己也懂一些html知识嘛,所以,“顶硬上”吧,顺便也接触一些新东西。

以前了解的web前端知识基本上就知道div+css,懂一些bootstrap的使用,其余一概不知了。

有一天,发现了一个朋友写的前端代码后,只在web前端边缘“裸奔”的我被惊呆了…

第一次见到html标签和属性还可以直接嵌入变量,前端还可以像后端web框架一样实现路由…

第一次看到css还可以调用函数,声明变量,条件判断…

我写这篇文章的触发点完全是因为,这些新奇的东西让常年驻扎在后端的我震惊了。 但是这些新奇的东西搭建起来确花费了我不少时间,一是我对前端了解不多,二是前端框架琳琅满目,网上的意见也很不统一。因此我想写一篇将这些组件整合起来的博客,并使用一个demo项目给大家参考,希望能让大家节省一些纠结的时间。

es6

es6, ECMAScript 6是JavaScript语言的下一代标准,在2015年6月正式发布了。距离现在1年多了,但是主流的几款浏览器还没完全支持es6的语法,所以在编写完代码后需要将其转换成浏览器所支持的es5代码。es6教程推荐阮一峰大神的 ES6标准入门 一书,书本写的很严谨,权威。不过搭建部分个人觉得写的有些略复杂了,es6环境搭建可以参考我翻译的一篇文章 (译)ES6环境搭建简单入门。

说说es6给我的感觉吧,让我觉得最大的区别是原生支持使用import..from..从其他文件导入模块和肥箭头匿名函数。另外原生支持class,但是并没有其他语言的class那么强,支持了静态函数,但是却不支持静态属性-.-|(静态属性已经在es7的提案中)。还有从语法的简洁度来说,(个人觉得)还不如coffeescript,搞不懂为什么还非得要使用这么长的function关键字…

angularjs

我没用过其他框架,所以对比的东西我也说不了多少,让我觉得比起“裸奔”html最大区别是,我可以在html标签的属性或内容嵌入js数据,并且这些数据在后台的更新时会自动更新到前台,让静态html也可以动态起来。这一功能在对于使用restful的web架构来说,极为方便。

sass

Sass 是对 CSS 的扩展,它允许你使用变量、嵌套规则、 导入等功能, 并且完全兼容 CSS 语法。可以让你的代码复用度上提高了不少。

语法可以参考阮一峰写的 SASS用法指南,内容写的不多,比较精简,看一遍就基本入门了。

gulp

gulp是一个构建工具,类似于makefile,将一系列构建步骤写成一个文件,需要构建的时候执行调构建命令就可以了。

gulp任务的核心是管道流,如同linux的命令行的管道

举个linux命令行的栗子:

# 这条命令将产生一个32位的随机字符串
cat /dev/urandom 
阅读全文


快乐成长 每天进步一点点