整理一些在项目可以用到技术组件
Hudson/jenkin
主要作用code review
分布式计算开源框架Hadoop介绍
http://www.infoq.com/cn/articles/hadoop-intro
Node.js+MongoDB 这个比较热门
MAVEN
Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标
准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Managem
ent System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。
当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以
应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件
JIRA
JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求
收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域
Spring Batch
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数
据处理系统。
Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级
服务。
Spring Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作
业处理统计工作重新启动、跳过,和资源管理等重要功能
Druid
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性
能更好
简单使用介绍
Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部
配置给DataSource对象
shiro1.2.2Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和
会话管理等功能:
认证 - 用户身份识别,常被称为用户“登录”;
授权 - 访问控制;
密码加密 - 保护或隐藏数据防止被偷窥;
会话管理 - 每用户相关的时间敏感的状态
一般项目主要应用技术组件
1. Spring (是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架)
2. SpringMVC(一个使用简单,学习成本低的MVC框架)
3. MyBatis(一个基于SQL Maps和Data Access Objects(DAO)支持普通 SQL查询,存储过
程和高级映射的优秀持久层框架)
4. Redis (是一个高性能的key-value的NoSQL数据库)
5. mongoDB(一个查询功能比较强大,能存储海量数据的非关系型数据库)
6. FastJson(高效能的json处理框架)
7. Jakarta POI (提供了一组操作Windows文档的Java API,用于导出和写入Excel)
8. BoneCP(是一个快速、免费而且开源的java数据库连接池(JDBC Pool)管理工具库;官方数
据说是C3P0的25倍左右)
9. LogBack(日志框架,基于log4j,Logback的内核重写了,在一些关键执行路径上性能提
升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。)
10.Maven(是一个基于项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报
告和文档的软件项目管理工具)
11. Git是一款免费、开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目
。
12. ExtJS可以用来开发RIA也即富客户端的AJAX应用,是一个用javascript写的,主要用于
创建前端用户界面,是一个与后台技术无关的前端ajax框架。
13.Java项目性能监控和调优工具-Javamelody
14.天兔数据库性能监控
15.项目代码质量管理工具SonarQube
16.目前的Spring拥有众多子项目,如Spring Batch、Spring Data、Spring Mobile、Spring Boot、
Spring Security、Spring Social、Spring Shell、Spring Integration、Spring Side
MyCAT
一个彻底开源的,面向企业应用开发的大数据库集群
支持事务、ACID、可以替代MySQL的加强版数据库
一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
一个新颖的数据库中间件产品
phpMyAdmin
phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工
具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂
SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于
由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程
式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料
表。也可借由phpMyAdmin建立常用的php语法,方便编写网页时所需要的sql语法正确
ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。
ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已
经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。
Apache Kafka是一个开源消息系统项目,由Scala写成。该项目的目标是为处理实时数
据提供一个统一、高通量、低等待的平台
十三、大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
http://www.aboutyun.com/thread-6855-1-1.html
从Hadoop到Spark的架构实践
Disconf 可以为各种业务平台提供统一的配置管理服务。
支持配置(配置项+配置文件)的分布式化管理
配置发布统一化
极简的使用方式(注解式编程 或 XML代码无代码侵入模式)
低侵入性或无侵入性、强兼容性
需要Spring编程环境
hbase是从 hadoop中分离出来的apache顶级开源项目。
由于它很好地用java实现了google的bigtable系统大部分特性,因此在数据量猛增的今天非
常受到欢迎。对于淘宝而言,随着市场规模的扩大,产品与技术的发展,业务数据量越来越
大,对海量数据的高效插入和读取变得越来越重要。由于淘宝拥有也许是国内最大的单一ha
doop集群(云梯),因此对hadoop系列的产品有比较深入的了解,也就自然希望使用hbase来做
这样一种海量数据读写服务。本篇文章将对淘宝最近一年来在online应用上使用和优化hbas
e的情况做一次小结
Flume是一个分布式、可靠、和高可用的海量日志采集、聚合和传输的系统
http://my.oschina.net/direnjie/blog/626299
http://itindex.net/detail/50694-%E6%97%A5%E5%BF%97-%E7%B3%BB%E7%BB%9F-flume
LogStash架构专为收集、分析和存储日志所设计
otter阿里巴巴分布式数据库同步系统(解决中美异地机房)
分布式事物解决方案 rabbitmq
今天面试,一个人问我,如何解决高并发的分布式事务处理,我按照我之前干活的经验,认为用消息队列做写入缓冲,用二端提交和串联的transaction做事务处理,在出现commit异常的情况下,采用事务补偿,也就是说,先假设事务成功的概率是99%以上,然后检查最终一致性,最后针对出错的不到1%做事务补偿。
但是被骂了。。说现有互联网场景下,消息队列最多承受20W/s的并发,而且消息队列会有很长的延时。
但是我就很好奇,究竟还有什么大法可以搞定这种每秒超过100W以上的并发分布式事务写入操作呢?
或者说难道不能用局部性原则来从设计上解决这个问题吗?
目前在生产环境,使用较多的消息队列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。
以下介绍消息队列在实际应用中常用的使用场景。异步处理,应用解耦,流量削锋和消息通讯四个场景。
rundeck自动化批量发布上线
elasticsearch+logstash+kibana
elasticsearch+logstash+kibana 这个组合目前是最流行的应用最广泛的开源实时日志分析平台(日志记录,响应基本是秒级)能解决我们的问题。
Logstash是一个完全开源的工具,他可以对你的日志进行收集、过滤,并将其存储供以后使用(如,搜索)。
Elasticsearch是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。
Kibana 也是一个开源和免费的工具,它Kibana可以为 Logstash 和 ElasticSearch 提供的日志分析友好的 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
Redis:我们这里也应用到了Redis服务器通常都是用作 NoSQL 数据库,不过 logstash 只是用来做消息队列 不会撑爆内存和磁盘。
FastDFS是一个开源的轻量级分布式文件系统
它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等
分布式数据层 TDDL
淘宝根据自己的业务特点开发了TDDL(Taobao Distributed Data Layer 外号:头都大了 ©_Ob)框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource实现,具有主备,读写分离,动态数据库配置等功能。
Cobar,谷歌的 Vitess(数据库中间件)
唯品会
全链路监控技术栈
技术栈,我们的体系有用了很多的技术,Spark 、 Open TSDB 、HBase 、Elastic Search,Kafka,Flume,Python 等,整个技术栈相当之复杂
Netty
是由JBOSS提供的一个java开源框架。Netty提供异步的、事件驱动的网络应用程序框架和工具,用以快速开发高性能、高可靠性的网络服务器和客户端程序
OAuth2.0认证授权过程
要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。
Facebook开源内存数据库Beringei,追求极致压缩率
CAT ----分布式实时监控系统
CAT 由大众点评开发的,基于 Java 的实时应用监控平台,包括实时应用监控,业务监控。
CAT 支持的监控消息类型包括:
Transaction适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
Event用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Metric用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
Trace用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息
Open-Falcon 是小米运维部开源的一款互联网企业级监控系统解决方案.
http://open-falcon.org/
JHipster简介
JHipster或者称Java Hipster,是一个应用代码产生器,能够创建Spring Boot + AngularJS的应用。开源项目地址:JHipster/Github
pac4j,pac4j 是一个 Java 权限引擎,支持多种协议多种框架
java权限引擎支持验证机制:
OAuth(1.0 & 2.0): Facebook, Twitter, Google, Yahoo, LinkedIn, Github... using thepac4j-oauthmodule
CAS(1.0, 2.0, SAML, logout & proxy) + REST API support using thepac4j-casmodule
HTTP(form, basic auth, IP, header, GET/POST parameter authentications) using thepac4j-httpmodule
OpenIDusing thepac4j-openidmodule
SAML(2.0) using thepac4j-samlmodule
Google App EngineUserService using thepac4j-gaemodule
OpenID Connect1.0 using thepac4j-oidcmodule
JWTusing thepac4j-jwtmodule
LDAPusing thepac4j-ldapmodule
relational DBusing thepac4j-sqlmodule
MongoDBusing thepac4j-mongomodule
Stormpathusing thepac4j-stormpathmodule.