`
maosheng
  • 浏览: 571439 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快 ...
过去几年以来,“微服务架构”的概念已经在软件开发领域获得了一个稳定的基础。作为“面向服务架构”(SOA)的一个继任者,微服务同样也可以被归类为“分布式系统”这一类,并且进一步发扬了SOA中的许多概念与实践。不 ...
多线程、并发及线程的基础问题: 1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组。我的意思是,如果改变引用指向的数组,将会受到 volatile 的保护,但是如果多个线程同时改变数组的元素,volatile 标示符就不能起到之前的保护作用了。 2)volatile 能使得一个非原子操作变成原子操作吗? 一个典型的例子是在类中有一个 long 类型的成员变量。如果你知道该成员变量会被多个线程访问,如计数器、价格等,你最好是将其设置为 volatile。为什么?因为 Java 中读取 long 类 ...
1.架构分类 关于架构,大体可以分为以下三类: 1.1 IT架构 基于硬件、网络等构建整体的IT运维架构体系,包括IDC机房、网络拓扑、安全、负载均衡、运维监控等 1.2 基础架构 主要基于基础服务的软件产品架构,如SOA中间件、消息中间件、规则引擎、大数据存储、数据库产品、第三方组件等,相对独立于业务系统、不考虑具体的业务场景,更多地关注技术产品本身的性能、可靠、可扩展等,服务于业务系统。 1.3 应用架构 偏重于业务功能的实现,在基于用户需求实现业务功能、提升用户体验的基础上,保证系统的性能、可靠、可维护、可扩展。 2.关于应用架构师 我个人更愿意把应用架构师称之为SA( ...

java 内存模型

    博客分类:
  • Java
JAVA内存模型: Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来建立的。 不同的平台,内存模型是不一样的,但是jvm的内存模型规范是统一的。其实java的多线程并发问题最终都会反映在java的 ...
最佳实践 #1:按功能分割 相关的功能部分应该合在一起,不相关的功能部分应该分割开来——不管你把它叫做SOA、功能分解还是工程秘诀。而且,不相关的功能之间耦合程度越松散,就越能灵活地独立伸缩其中的一部分。 在编码层次,我们无时不刻都在运用这条原则。JAR文件、包、Bundle等等,都是用来隔离和抽象功能的机制。 在应用层次,eBay将不同的功能划分成几个应用程序池。销售功能由一组应用服务器运行,投标功能由另一组负责,搜索又是另外一组服务器。我们把总 共约16,000台应用服务器分成220个池。这样就可以根据某项功能的资源消耗,单独地伸缩其中一个池。我们也因此得以进一步隔离及合理化资源依赖关 ...

Apache kafka 介绍

kafka是一种高吞吐量的分布式发布订阅消息系统,它有如下特性:     通过O(1)的磁盘数据结构提供消息的持久化,这种结构对于即使数以TB的消息存储也能够保持长时间的稳定性能。     高吞吐量:即使是非常普通的硬件kafka也可以支持每秒数十万的消息。     支持通过kafka服务器和消费机集群来分区消息。     支持Hadoop并行数据加载。 kafka的目的是提供一个发布订阅解决方案,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是在现代网络上的许多社会功能的一个关键因素。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合 ...
三高是电商核心交易系统的基础: 电商核心交易系统有很多特点,如分布式、高可扩展等,在众多特性中,高可用、高并发、高性能是基础。 应用架构的演进历程: 强依赖-> Service化->业务解耦->读写分离->异步->水平/垂直拆分->服务逻辑分组 强依赖遵循简单的MVC架构,Controller层处理了所有的业务逻辑包括与DB的交互,在系统初期这种Simple的架构方便快捷,成本低业务响应快。但当业务开始变得复杂、人员规模爆发式增长,这种强耦合强依赖带来的弊端就成了巨大的瓶颈,代码耦合度高互相冲突、出错概率和事故概率明显提升,业务需求不能快速响应 ...
ConcurrentLinkedQueue 的分析和使用: 在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环 CAS 的方式来实现。 ConcurrentLinkedQueue 是一个基于链接节点的无界线程安全队列,它采用先进先出的规则对节点进行排序,当我们添加一个元素的时候,它会添加到队列的尾部,当我们获取一个元素,它会返回队列头部的元素。它采用了“wait-free ...

BI 大数据分析

    博客分类:
  • BI
基本概念: 在BI中,用来监控公司运行的可概况的数值被称作度量值(measure)。 层次结构是将相关组织成级而形成的,层次结构可以少至数级。层次结构有一个最低的级,叫做叶级,其上是若干的中间级,最后是顶级。在大多数的层次结构中,顶级是All级并只包含单个All成员。可以将层次结构中的成员比作父子关系,如果子成员只有一个父成员,则该层次结构为自然层次结构。如果是一个对称层次结构,那么层次结构中的每条路径都有相同数目的级并且每级都有一个成员。在不对称层次结构中,不同的路径会有不同数据的级。在不规则层次结构中,每条路径有相同数目的级,但并非所有级都有成员。 独立属性和层次结构就是报表的维度, ...
事务是保证数据库从一个一致性的状态永久地变成另外一个一致性状态的根本,其中,ACID是事务的基本特性。 A是Atomicity,原子性。一个事务往往涉及到许多的子操作,原子性则保证这些子操作要么都做,要么都不做,而不至于 ...
Mongodb和Memcached不是一个范畴内的东西。Mongodb是文档型的非关系型数据库,其优势在于查询功能比较强大,能存储海量数据。Mongodb 和 Memcached不存在谁替换谁的问题。 Memcached 和 Redis它们都是内存型数据库,数据保存在内存中,通过tcp直接存取,优势是速度快,并发高。 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。 Memcached 的分布式不是在服务器端实现的,而是在客户端应用中实现的,即通过内置算法制 ...
IP配置信息: LVS-DR-Master          192.168.2.166 LVS-DR-BACKUP          192.168.2.167 LVS-DR-VIP             192.168.2.170        WEB1-Realserver        192.168.2.171 WEB2-Realserver        192.168.2.172 GateWay                192.168.2.253 一.keepalived安装 Keepalived在这里主要用作RealServer的健康状态检查以及Load ...
由于在生产环境使用了mysqlcluster,需要实现高可用负载均衡,选用keepalived+haproxy来实现。 1.Mysql Cluster安装 参考 CentOS 6.3 安装 mysql-cluster-gpl-7.4.7 https://www.iteye.com/blog/maosheng-2249106 2.haproxy安装(haproxy-1.3.15.10) 参考CentOS 6.3 安装 HAProxy https://www.iteye.com/blog/maosheng-2256676 haproxy配置文件: # vi /etc/haproxy/ha ...
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,同时能够提高网络的灵活性和可用性。 目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LVS,Nginx及HAProxy;高可用软件有Heartbeat、Keepalived;成熟的架构有LVS+Keepalived、Nginx+Keepalived、HAProxy+keepalived、DRBD+Heartbeat. 目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+ Keep ...
Global site tag (gtag.js) - Google Analytics