- 浏览: 261150 次
- 性别:
- 来自: 上海
最新评论
-
zhaohuaxishiwzw:
这么牛没人赞?
【总结】Spring原理剖析
文章列表
【编者按】微服务背后的大理念是将大型、复杂且历时长久的应用在架构上设计为内聚的服务,这些服务能够随着时间的流逝而演化。本文主要介绍了利用 Java 生态系统构建微服务的多种方法,并分析了每种方法的利弊。
快速预览
在 Java 生态系统中构建微服务的策略主要有:container-less, self-contained 和 in-container;
Container-less 微服务把应用程序及其所有依赖打包成单一的 jar 文件;
Self-contained 微服务也会将应用及其依赖打包成单一的Jar文件,但它还包含可能含有第三方库的嵌入式框架;
In-container ...
Tomcat模块
Service
我们将 Tomcat 中 Connector、Container 作为一个整体比作一对情侣的话,Connector 主要负责对外交流,可以比作为 Boy,Container 主要处理 Connector 接受的请求,主要是处理内部事务,可以比作为 Girl。那么这个 Service 就是连接这对男女的结婚证了。是 Service 将它们连接在一起,共同组成一个家庭
Service 只是在 Connector 和 Container 外面多包一层,把它们组装在一起,向外面提供服务,一个 Service 可以设置多个 Connector,但是只能有 ...
- 2016-01-14 14:57
- 浏览 656
- 评论(0)
思维方式
惯性思维方式:按照经验和直觉来分析和处理问题
逻辑思维方式:强调推理和逻辑分析
水平思维方式:有创意天马行空,尝试关联一些特殊属性来获得创新
结构化思维:以假设为先导,强调快速、系统解决问题
什么是结构化思维
以假设为前提,以事实为依据(分类假设
)
一种从框架到细节的思维方式
强调在分析问题的过程中,不先入为主,不马上陷入细节
对构成要素和思想观点进行合理的分类分组,分组后的思想观点经过
- 2016-01-14 14:56
- 浏览 866
- 评论(0)
敏捷开发
敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发
在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态
敏捷4大宣言
个体和交互胜过过程和工具
人是软件项目获得成功最为重要的因素
合作、沟通能力以及交互能力比单纯的软件编程能力和工具更为重要
可以工作的软件胜过面面俱到的文档
- 2016-01-14 14:55
- 浏览 877
- 评论(0)
Spring模块
Core(核心容器)
说明
核心容器提供 Spring 框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现
BeanFactory使用控制反转(IOC)
模式将应用程序的配置和依赖性规范与实际的应用程序代码分开
IOC(控制反转模式 )
不创建对象,但是描述创建它们的方式。在代码中不直接与对象和服务连接,但在配置文件中描述哪一个组件需要哪一项服务。
- 2016-01-14 14:54
- 浏览 2582
- 评论(1)
Java内存模型
工作内存和主内存
主内存
Java内存模型所有的变量都存储在主内存中
工作内存:
每个线程有自己独立的工作内存,它保存了该线程使用的变量的主内存拷贝
线程对变量的操作都在自己的工作内存中进 ...
- 2016-01-14 14:53
- 浏览 521
- 评论(0)
1,数据库概述
在互联网时代,海量数据的存储与访问成为系统设计与使用的瓶颈问题,对于海量数据处理,按照使用场景,主要分为两种类型
联机事务处理(OLTP:On-line transaction processing):
也称为面向交易的处理系统,其基本特征是原始数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果
功能:日常交易处理
DB设计:面向实时交易类应用
数据处理:当前的,最新的细节的,二维的分立的
实时性:实时读写要求高
事务:强一致性
分析要求:低,简单
联机分析处理(OLAP:
- 2016-01-14 14:52
- 浏览 978
- 评论(0)
1,Netty简述
Netty 是一个基于 JAVA NIO 类库的异步通信框架,用于创建异步非阻塞、基于事件驱动、高性能、高可靠性和高可定制性的网络客户端和服务器端
RPC高性能分析,请参考文章“【总结】RPC性能之道 ”
特点
异步、非阻塞、基于事件驱动的NIO框架
支持多种传输层通信协议,包括TCP、UDP等
开发异步HTTP服务端和客户端应用程序
提供对多种应用层协议的支持,包括TCP私有协议、HTTP协议、WebSocket协议、文件传输等
默认提供多种编解码能力,包括Java序列化、Google的ProtoBuf、二进制编解码、Jboss marshalling、文本 ...
- 2016-01-14 14:51
- 浏览 3472
- 评论(0)
1,缓存:Memcached
- 只支持简单的Key / Value结构
-不支持数据持久化
- 每个Key的值最大1MB
-协议简单:不使用复杂的XML等格式,而使用简单的基于文本行的协议
-基于libevent的事件处理:libevent是个程序库,它将Linux的epoll、BSD类操作系统的kqueue
- 2016-01-14 14:50
- 浏览 456
- 评论(0)
1,ZooKeeper
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务
是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件
为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、名字服务、分布式同步、组服务等
2,ZooKeeper使用场景
分布式配置中心(数据发布与订阅)
【说明】发布者将数据发布到ZK节点上,供订阅者动态获取数据,实现配置信息的集中式管理和动态更新
- 2016-01-14 14:49
- 浏览 825
- 评论(0)
1,Redis
丰富的数据结构(Data Structures)
字符串(String)
Redis字符串能包含任意类型的数据
一个字符串类型的值最多能存储512M字节的内容
利用INCR命令簇(INCR, DECR, INCRBY)来把字符串当作原子计数器使用
使用APPEND命令在字符串后添加内容
列表(List)
Redis列表是简单的字符串列表,按照插入顺序排序
你可以添加一个元素到列表的头部(左边:LPUSH)或者尾部(右边:RPUSH)
一个列表最多可以包含232-1个元素(4294967295,每个表超过40亿个元素)
在社交网络中建立一个时间线模 ...
- 2016-01-14 14:48
- 浏览 3607
- 评论(0)
1,背景
随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进
单一应用架构
当网站流量很小时,只需一 ...
- 2016-01-14 14:47
- 浏览 2874
- 评论(0)
1,MySQL基础
-
MySQL物理文件组成
-
MySQL逻辑架构
-
MySQL自带工具
2,MySQL存储引擎
-
MyISAM
-
Innodb
-
NDBCluster
3,MySQL性能优化
- 硬件层优化
- OS层优化
-
MySQL层优化分析
- 系统架构及实现对性能的影响
-不适合放在数据库存放
-二
- 2016-01-14 14:45
- 浏览 763
- 评论(0)
1,MySQL读写分离
-
MySQL复制(Replication)
-
双主多从架构
2,MySQL高可用(HA)和读负载均衡
-
高可用:Keeplived,失效转移
-
读负载均衡:LVS
3,MySQL可扩展设计 - 数据切分
- 数据的垂直切分(纵向切分)
- 场景/出发点
-
大字段
-
使用用途:属性类别
-
- 2016-01-14 14:45
- 浏览 709
- 评论(0)
1,使用消息中间件场景
-
解耦和扩展性
-
系统之间集成只需要基于消息队列的数据接口层,这允许系统各自独立的扩展或修改各自的实现,只需要确保遵守同样的接口约束
- 异步通信/处理
-
一些事务性很强,耗时久的请求,如下订单,注册发邮件等,接受请求后马上告诉用户后台已经接受到了请求并在处理请等待,前台不停的检查处理情况,防止了用户一直挂在当前页面,提升了交互体验
-
有些请求伴随着很多后台的附加处理,比如:记录日志,发通知邮件,相关计算处理更新通知等,都可以通过发消息的方式处理,不影响用户请求的主流程
- 处理突发高并发/高峰值的负载情况
- 2016-01-14 14:44
- 浏览 776
- 评论(0)