<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[for5million的专栏]]></title><description><![CDATA[新的起点，努力做到最好。]]></description><link>https://blog.youkuaiyun.com/for5million</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; for5million]]></copyright><item><title><![CDATA[架构师速成-架构目标之伸缩性\安全性]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/48488985</link><guid>https://blog.youkuaiyun.com/for5million/article/details/48488985</guid><author>for5million</author><pubDate>Wed, 16 Sep 2015 09:00:58 +0800</pubDate><description><![CDATA[为满足伸缩性，所需的架构模式包含：

分布式，这个前面有单独的章节进行了讲解，分布式是互联网时代的主旋律。负载均衡，前面已经有讲解。服务拆分，按照业务进行系统服务的拆分并单独部署。

为满足伸缩性，需要的支撑系统：

运维系统：

自动扩容，缩容
监控系统


监控流量，确定何时伸缩






为满足安全性，所需的架构模式包含：

数据加密，密码的加密存]]></description><category></category></item><item><title><![CDATA[架构师速成-架构目标之可用性]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/48421037</link><guid>https://blog.youkuaiyun.com/for5million/article/details/48421037</guid><author>for5million</author><pubDate>Sun, 13 Sep 2015 21:34:30 +0800</pubDate><description><![CDATA[服务器等，从而共同完成工作任务。各种负载均衡的软硬件有很多，我们可以单独讲解一下。配置中心，原来单一节点的配置，被类似zookeeper的多节点配置中心取代。流量控制，流量控制是保证大流量下系统可用性的重要手段，当系统流量不足以支撑所有流量时，只保留合理的流量处理。其他流量直接丢弃，否则系统会被压垮，造成雪崩。功能降级，另外大流量情况下，有些无关紧要的功能可以暂时降级，后期通过数据补全的方式进行修]]></description><category></category></item><item><title><![CDATA[架构师速成-架构目标之正确性]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/48295709</link><guid>https://blog.youkuaiyun.com/for5million/article/details/48295709</guid><author>for5million</author><pubDate>Tue, 08 Sep 2015 19:37:46 +0800</pubDate><description><![CDATA[本系统架构模式：

统一异常

统一异常处理是保证程序正确性的第一步，这是第一个架构模式。具体如何实现，详见前面的文章。
日志

日志也是保证程序正确的一大手段，虽然是在错误出现后，日志才会记录。但是日志是快速确认问题，并分析出隐藏问题的重要手段。关键点

日志文件按照级别进行区分，将错误和普通调试日志分开日志文件滚动方式，可以按天及按大小滚动，定时清理日志级别可以实时调整设置性]]></description><category></category></item><item><title><![CDATA[架构师速成-架构的目标]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/48263511</link><guid>https://blog.youkuaiyun.com/for5million/article/details/48263511</guid><author>for5million</author><pubDate>Mon, 07 Sep 2015 11:39:53 +0800</pubDate><description><![CDATA[架构的目标为了实现以下特性：

正确性

系统首先需要正确，运行稳定
可用性

软件系统对于用户的商业经营和管理来说极为重要，因此软件系统必须非常可靠，一般99.99%是一个比较基本的要求。
快速开发

互联网目前是一个快鱼吃慢鱼的时代，已经不是大鱼吃小鱼了。因为小鱼在一夜之间就长大了，把大鱼吃掉了。诺基亚就是明证，facebook就是明证。
良好体验

良好的体验对用户]]></description><category></category></item><item><title><![CDATA[架构师速成-架构体系]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/48229123</link><guid>https://blog.youkuaiyun.com/for5million/article/details/48229123</guid><author>for5million</author><pubDate>Sat, 05 Sep 2015 20:24:02 +0800</pubDate><description><![CDATA[经过这段时间的反思和整理，终于对架构有了一个较为明确的理解。架构是产品从无到有以及慢慢壮大过程中所需要的全部技术体系总称，架构过程：

配置、编码、测试、运维、监控分析、安全、运营等一系列技术体系的选型、取舍技术选型基础上进行规划、设计、实现、迭代、制定相关规范相关技术及规范运用到产品开发的整个过程中，并在产品迭代过程中对架构进行迭代优化

架构不止包含技术的框架，比如有人用了spring]]></description><category></category></item><item><title><![CDATA[程序员都很闷骚]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47656075</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47656075</guid><author>for5million</author><pubDate>Fri, 14 Aug 2015 08:25:53 +0800</pubDate><description><![CDATA[假定：

程序员都是闷骚的程序员有独特的搞笑方式程序员80%都不满于现状，需要发泄程序员都有一点色

所以：

子龙左手青釭剑，右手亮银枪，跨下白龙马，一身白盔白甲，帅到爆炸！如今我们左手xmind，右手eclipse，uml在脚下，也是无比潇（ku）洒（bi） 他们是喜欢的亚美蝶，揍我不行，揍我小舅子可以。 他们是喜欢的老板说：哎呀，我们方向错了，我们重新搞一个方向吧！（产品、码农、]]></description><category></category></item><item><title><![CDATA[架构师速成8.4-分库分表的关键点]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47604899</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47604899</guid><author>for5million</author><pubDate>Thu, 13 Aug 2015 09:13:57 +0800</pubDate><description><![CDATA[我们还是由浅入深（这个词我喜欢，你呢？）的讨论一下，分库分表的关键点（本故事纯属虚构，仅为搞笑）：

当你的系统很小的时候，只有一个数据库，每个表的主键都是自增的，你都不去关心主键变成了多少，反正db保证自增，小日子过的很是惬意。但惬意的日子总是短暂的，你因为DB宕机被老板fire 3次（见上一个故事）。进入第4个公司的时候，你发粪涂墙，将集群改成主备HA,结果顺利出任CTO，迎娶白富美，走向]]></description><category></category></item><item><title><![CDATA[架构师速成-有关架构的思考]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47414497</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47414497</guid><author>for5million</author><pubDate>Tue, 11 Aug 2015 08:55:16 +0800</pubDate><description><![CDATA[架构是什么？架构的目标是什么？如果解决这2个问题，可能我能更好的梳理杂乱的架构理论。经过2天的思考，总算有了一点眉目。我们从一个产品的本质来说，追本朔源，自上而下：

大概就是这样的，当然架构不止需要解决这些问题，本产品只是其中一个部分，要支撑一个web产品还需要依赖很多的外部公共系统，对这些系统整合也算作架构的范畴。



架构，又名软件架构，是有关软件整体结构与组件的抽象描述，用于]]></description><category></category></item><item><title><![CDATA[架构师速成8.3-可用性之分库分表]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47393083</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47393083</guid><author>for5million</author><pubDate>Mon, 10 Aug 2015 08:00:18 +0800</pubDate><description><![CDATA[有状态分布式，涉及的知识就比较多了，不过我们可以拿几个现实的例子由浅入深的来理解。

数据库的分库分表

假设你是一个开发负责人，开始使用单机的数据库，突然一天数据库硬盘挂掉了。你没有做备份，然后就没有然后了。进入第2个公司，你意识到备份的重要性，每天定时备份到另一台机器，突然有一天，数据库硬盘挂掉了。你心想幸好我有备份，然后巴拉巴拉的恢复起来，用了2个小时。老板说不错，但是—-我们因为宕]]></description><category></category></item><item><title><![CDATA[架构师速成-如何高效编程]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47360813</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47360813</guid><author>for5million</author><pubDate>Sat, 08 Aug 2015 18:07:55 +0800</pubDate><description><![CDATA[今天看见有个csdn的征文大赛，谈谈如何高效编程，正好之前有些感触，先沉淀下来。

引子

赵云大喝一声，挺枪骤马杀入重围，左冲右突，如入无人之境。那枪浑身上下，若舞梨花；遍体纷纷，如飘瑞雪。

赵云是所有历史人物中我最喜欢的一个，如果放到现代，他走了it的道路，一定可以成为一个编程高手。为什么？

其实古时打仗也是一门技术活，需要有勇有谋，跟it没有什么太大的区别。打仗要修身、修]]></description><category></category></item><item><title><![CDATA[架构师速成8.3-可用性之分布式]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47355411</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47355411</guid><author>for5million</author><pubDate>Sat, 08 Aug 2015 09:45:55 +0800</pubDate><description><![CDATA[分布式算是软件界发展的一个里程碑，它开辟一个新的软件时代，其他的溢美之词我就不再乱说了。

分布式按照我的观点，应该分为有状态和无状态2种：

有状态

分布式数据库分布式存储
无状态

分布式计算分布式web系统


当然分布式尽量做成无状态的分布式，但是存储最终因为最终存储的是有状态的数据，所以不得不变的有状态。当然web系统也可以是有状态的，但是最好做成无状态的，因为]]></description><category></category></item><item><title><![CDATA[架构师速成8.3-可用性]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47333981</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47333981</guid><author>for5million</author><pubDate>Fri, 07 Aug 2015 09:18:22 +0800</pubDate><description><![CDATA[作为一个软件系统可用性是第一位的，如果一个系统不可用，你其他的地方做的再怎么好，然并卵。

一般什么情况下软件会不可用：

我方发生故障，导致系统不可用，当然会出现单机的不可用及n多机器群的全部不可用。

程序故障 功能错误、程序退出系统故障 CPU超负荷、内存超负荷、网络超负荷物理故障  机器死机 断电 断网不可恢复故障 地震、海啸等等

客户方也会发生相同故障，导致系统不可用，]]></description><category></category></item><item><title><![CDATA[架构师速成8.3-架构师必须要了解的规则]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47333973</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47333973</guid><author>for5million</author><pubDate>Fri, 07 Aug 2015 09:17:22 +0800</pubDate><description><![CDATA[作为一个架构师，有些规则是必须要掌握的，这就想软件的公理，如果你学物理不知道牛顿定律，那就不要学了。在软件行业也有类似的东西，我称之为软件定律。例如：

ACID,CAP,BASE

ACID

传统数据库系统中，事务具有ACID 4个属性

(1)原子性（Atomicity）：事务是一个原子操作单元，其对数据的修改，要么全都执行，要么全都不执行。

(2)一致性（Consis]]></description><category></category></item><item><title><![CDATA[架构师速成6.15-开发框架-单点登录]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47310489</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47310489</guid><author>for5million</author><pubDate>Thu, 06 Aug 2015 07:10:50 +0800</pubDate><description><![CDATA[单点登录应该归为架构的部分了，但是一般网站在开始的时候最好有单点登录的思想，防止后期再做大量的修改。而且单点登录对于开发人员来说并没有增加太多额外的工作量，所以提前讲一下对大家都是好的。

先说一下单点登录的机制（摘自百度百科，给我广告费）：

当用户第一次访问应用系统1的时候，因为还没有登录，会被引导到认证系统中进行登录；根据用户提供的登录信息，认证系统进行身份校验，如果通过校验，应该返]]></description><category></category></item><item><title><![CDATA[架构师速成6.14-开发框架-异常处理]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47291267</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47291267</guid><author>for5million</author><pubDate>Wed, 05 Aug 2015 08:52:53 +0800</pubDate><description><![CDATA[异常为什么需要单独一节来讲解呢？因为异常是软件设计里一项需要架构者自己构思处理的一个特殊部分。一般的框架没有提供统一的处理方式，而且会被很多同学忘记处理，或者是比较粗糙处理掉。想一想有很多网站出错时，用户会看到一大段的英文异常，甚至执行的sql都包含在里面，你会不会觉得很不专业呢？

首先异常应该分类，确定异常分类至关重要，这是后期进行不同处理的基础：

业务异常，是用户在执行业务请求时，]]></description><category></category></item><item><title><![CDATA[架构师速成6.13-开发框架-前后结合]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47271185</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47271185</guid><author>for5million</author><pubDate>Tue, 04 Aug 2015 08:14:50 +0800</pubDate><description><![CDATA[前面说完了前端和后端的封装，本节再单独讲解一下哪些地方需要前后结合。

AJAX的前后端结合：

定义统一的返回消息体，{isError:true/false,message:’需要返回的消息’,data:{返回的数据},postAction:{后续的动作}}根据消息体的返回，进行不同类别的展示，例如：错误提示，加载页面片段，数据刷新，页面跳转，或者自定义后续处理服务端能自动判断是JSON]]></description><category></category></item><item><title><![CDATA[架构师速成6.12-开发框架-前端封装]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47249041</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47249041</guid><author>for5million</author><pubDate>Mon, 03 Aug 2015 07:49:54 +0800</pubDate><description><![CDATA[做一个网站不只有写后端代码，为了更好的用户体验以及更优雅的代码实现，我们也需要对前端进行封装。但是在谈封装之前还是要先提一下统一的规范，前端统一的规范尤为重要，这是给用户一致性体验最核心的关键点。我举一个反面的例子，大家可能一下就明白前端规范的重要性了。之前做过一个网站，流程如下：

设计给图片前端照图片进行静态页面生成后端再加入代码，最终成为一个网站

这个流程没有什么问题，但是设计没有]]></description><category></category></item><item><title><![CDATA[架构师速成6.11-开发框架-后端封装思路]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47164485</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47164485</guid><author>for5million</author><pubDate>Fri, 31 Jul 2015 07:46:48 +0800</pubDate><description><![CDATA[要做一个好的开发框架并不是直接找一个现成的Spring就ok了，这个对于一般新手来说学习难度还是有点高。另外Spring还是一个通用性的框架，我们需要针对业务的定制化封装。我以java为例讲解一下后端需要做什么：

确定层数结构

parent

commontestdaoservice-commonserviceweb-commonweb

parent统一引入的类库及版本，通过]]></description><category></category></item><item><title><![CDATA[架构师速成6.9-如何写好代码]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47154373</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47154373</guid><author>for5million</author><pubDate>Thu, 30 Jul 2015 18:38:06 +0800</pubDate><description><![CDATA[读过很多代码，有些人写了5年以上的代码，但是代码烂到直接让人无从读起。有人写的代码让人读的赏心悦目，为什么人与人之间的差距这么大呢？

看来如何写好代码还是一件很值得一说的事情。

关键思想：

人写代码是用来给别人读的，而不是给机器执行的。写代码就应该像写小说一样，让人读的轻松愉快。

软件的生命周期中，维护周期占1半以上，所以不看避免要有人来改动你的代码你如果更换工作岗位，你的]]></description><category></category></item><item><title><![CDATA[架构师速成6.8-设计开发思路-领域驱动]]></title><link>https://blog.youkuaiyun.com/for5million/article/details/47154311</link><guid>https://blog.youkuaiyun.com/for5million/article/details/47154311</guid><author>for5million</author><pubDate>Thu, 30 Jul 2015 18:28:44 +0800</pubDate><description><![CDATA[领域驱动设计简称DDD,很好的名字，先来普及一下相关的名词缩写：

测试驱动设计 TDD，行为驱动设计 BDD，面向对象设计 OOD，面向过程设计 OPD。

设计思路和方法是一项专门的技能，区别于设计模式，编程语言。UML是设计的工具，设计方法是设计的灵魂，而且设计方法并没有好坏之分。关键是你需要掌握各种设计方法，在做项目时信手拈来，才是真正的高手。为什么要讲领域驱动设计，因为在做大型系]]></description><category></category></item></channel></rss>