单线程的理解是任务只能单个单个的处理,比如说:
1+2=a,2+3=b,3+4=c。
单线程就是先算出a,再算出b,接着算c。
而多线程,假如是4线程,它就可以同时算出a、b、c。
单线程的好处就是易于编程,不需要考虑太多状况,缺点是效率低。
多线程的好处是效率高,性能高,但并不是所有的运算都可以被并行化。比如:1+2=b, 2+b=a,当a的运算依赖于b的结果时,就必须先等待1+2的运算完成才可以进行下一步运算。
而且多线程容易出现各种意外的稀奇古怪的bug。
非阻塞I/O
并不是同步就阻塞,异步就非阻塞。
即使是同步的,系统要等待一个任务的结果,那依然可以让内存先去做其他的事情,隔几分钟就回来看看是否有结果了,而不用一直在这里等待结果出现。
非阻塞指的就是,系统要等待一个任务的结果,但是可以让系统在完成之后给它信息,所以在等待期间可以去做其他的事情。
中间件
简单理解就是在业务之下,底层系统之上的功能件,可以让编写业务系统的人员轻松快捷地编写业务逻辑。
为什么会有中间件呢?因为业务开发中的很多功能都是可以复用的,完全没必要让每个程序员都编写一个中间件,这样很浪费时间和精力。
详情可见中间件是什么?如何解释比较通俗易懂?
里面关于阿里发展进程的回答很详细。