框架技术

by admin on 2019年10月7日

整理一些在项目可以用到技术组件

Hudson/jenkin

图片 1

详情请参考

JavaScript 的普及造就了一个非常活跃的技术,框架和库的生态系统。
这个生态系统不断涌现多式多样的框架和技术,对许多人来说都是高度的混乱。
那么你应该关注什么样的技术呢?

一、App技术框架的类型

 

图1 三种App技术框架之间的关系

目前App的技术框架基本分为三种(图1):

(1)Native
App:互动型,iOS、Android、WP各一套,而且要维护历史版本,要安装,开发耗时长

一种基于智能移动设备本地操作系统(如iOS、Android、WP操作系统),并使用对应系统所适用的程序语言编写运行的第三方应用程序,由于它是直接与操作系统对接,代码和界面都是针对所运行的平台开发和设计的,能很好地发挥出设备的性能,所以交互体验会更流畅。

(2)Web App:浏览型,只一套,只维护最新版本,不用安装,开发耗时短

一种采用Html语言编写的,存在于智能移动设备浏览器中的应用程序,不需要下载安装,可以说是触屏版的网页应用,由于它不依赖于操作系统,因此开发了一款Web
App后,基本能应用于各种系统平台。

(3)Hybrid
App:浏览互动兼顾型,native部分各一套,维护历史版本;web部分1套,维护最新版,开发耗时适中

一种用Native技术来搭建App的外壳,壳里的内容由Web技术来提供的移动应用,兼具“Native
App良好交互体验的优势”和“Web App跨平台开发的优势”。

主要作用code review

Mobile

你应该在哪里方面投入时间来获得最大收益呢? 目前公司招聘哪些技术栈呢?
哪些技术增长潜力最大呢?

二、App技术框架的选择

对于设计师而言,我们往往是被告知这个项目采用的是哪种技术框架,然后就开始设计了,其实,我们也可以根据产品特点、框架特点和项目时间(图2)来与产品和开发同学协商,合理地为App中不同的部分选择对应技术框架,然后才在对应的技术框架下思考设计方案。

 

图2 产品特点、框架特点和项目时间的考虑

分布式计算开源框架Hadoop介绍

Native Web
C++;.Net/XAML;Javascript+html5 SPA; Webpage;MVC 

现在最重要的技术是什么?这篇文章高度概括了你需要知道的内容,你可以通过文章中的链接了解所有关于它的一些信息。

三、Hybrid App技术框架的设计特点

由于Hybrid App是融合了Native App和Web App的技术特点,通过分析Hybrid
App的技术框架成分,能让我们更好地掌握App框架的基本开发知识,有助于我们更好地去做设计。

Hybrid
App的大部分内容都是在Native框架中加载Web网页内容,能在保证用户体验的前提下,让App的内容更具有扩展性,即使接入再多的内容和业务功能,也不会使得整个App的安装包过大,典型Hybrid
App的代表就是我们的手机淘宝客户端
。Hybrid
App在设计时,要注意以下五个要点(图3)。

 

图3 Hybrid App的五个设计要点

(1)图像渲染

Native技术部分由于能直接调用系统的渲染引擎,所以能实现流畅的复杂图像渲染,而不影响设备的性能。

Web内容部分由于是基于内置浏览器,在图像渲染的时候要通过浏览器访问系统的渲染引擎或调用基于浏览器的第三方渲染引擎,中间需要在多个层级进行渲染请求,所以渲染的时效性和性能会下降不少,导致较复杂的图像渲染或动态渲染时,会出现机器卡顿。

如图4所示,由于标题栏采用了Native技术框架,可采用复杂的毛玻璃效果,让标题栏更通透,而内容区采用了基于Html5的Web技术,因此不适合动态变换背景图的渲染方案(当图片轮播时,背景图会随着图片内容而动态变换出模糊的背景)。

 

图4 动态的图像渲染

(2)动效体验

由于Hybrid
App的内容区大部分采用基于Html5的Web技术,对动效的解释和操作需要消耗大量的CPU性能,在设计时,要注意以下三个方面:

a.
不同的动效类型对CPU性能的消耗不同(图5):对CPU性能要求低的动效类型能运行得更流畅,但如果当你的设计方案是非系统自带的动效类型时(图6),就需要提前跟开发沟通可行性和对CPU性能的消耗问题。

b.
机型的性能差异:不同的手机机型的CPU性能相差较大,需要了解不同机型在你的App中的占比(图7),因为即在iPhone6上能完美运行的动效或交互动作,在iPhone6以下的手机上可能就会卡住不动了,所以不太适合用于CPU性能消耗较大的频繁渲染。

c.
网络的影响:如果你的动效在运动时,还需要加载内容,就要考虑网络较慢时,内容加载对动效流畅度的影响,这时可考虑先加载完内容,再开始动效或简化、压缩加载的内容量。

 

图5 不同的动效类型对CPU的性能要求

 

图6 液化翻转的动效

 

图7 不同机型的市场占比

如图8所示,在Web内容区,当点击图片后,该图片放大(系统默认的缩放动效,对CPU性能消耗小),但其它图片自动重新排列的动效会比较消耗CPU性能,在低端机器上会出现卡顿或闪退的情况,并且还会受到网速的影响,导致体验不友好,如果必须做复杂动效,可以让该动效只出现在高端机型中。

 

图8 图片缩放的重新排列动效

(3)平台兼容

由于Hybrid
App的Web内容,是不同的平台共用同一套设计方案,所以为了更好地让设计方案兼容不同的平台特性和手机分辨率,所以建议文案和图形采用以下三种方式:

a. 系统默认字体:如果不是为了设计出特殊的字体样式,iOS、Android和Windows
Phone系统的默认字体(图9)是基本满足我们的需求,同时在不同平台上的显示效果也会比较好。

 

图9 系统默认字体

b.
SVG(可缩放矢量图形):能够自由缩放大小来适应不同屏幕尺寸和分辨率,不会模糊变形(图10)。

 

图10 SVG(可缩放矢量图形)

c. Iconfont来代替图标:能够自由变换大小和颜色(图11)。

 

图11 Iconfont图标

采用这三种方式不仅可以很好适配不同机型和屏幕尺寸,而且还不会增加安装包的大小。

如图12所示,如果按钮上的“闹钟和提醒我”采用的不是Iconfont和系统默认字体,则在不同尺寸的屏幕上的显示效果会很难控制,有被拉伸变形或模糊的风险。

 

图12 图标和字体在不同尺寸屏幕上的显示效果

(4)交互行为

由于Hybrid
App主要是通过网页的CSS样式结构和JavaScript程序语言来还原界面的设计和交互行为,所以跟纯Native
App技术框架相比,需要通过更繁琐的代码和层级请求才能实现跟原生系统一样的交互方式,虽然也可模拟Native
App的交互方式,但这样的模拟首先提高了开发成本,有悖于不影响性能和高效的原则,所以需要根据设计目标来合理选择是否需要跟系统交互保持一致。

如图13-a所示,如果“每日赢宝箱”的页面是纯Native框架搭建的,则当用户点击“参与互动拿红包”的卡片后,下一个页面会采用iOS系统默认的自右向左切入的交互方式。

 

图13-a 系统默认的交互方式

然而,由于这里采用的是Hybirid
App技术框架,所以会像网页一样,直接变换内容区的信息(图13-b),因为这样的实现方式更高效和不影响性能,更重要的是如果该页面采用直接变换内容的方式不会影响到用户的使用体验,这里就可以考虑不需要跟系统交互保持一致。

 

图13-b 直接变换内容区的交互方式

(5)加载方式

对于Hybrid
App框架的页面,由于同时存在Native和Web部分,所以在加载内容时,可以分开考虑加载方式:

  • A. Native部分:可以根据需要把常规内容存储在用户的手机上,加快加载的时间和减少重复加载相同内容的麻烦。
  • B. Web部分:Web内容区域是需要从网络上加载内容的,尤其在网络条件不好时,需要设计友好的等待状态,缓和用户的焦虑情绪。

如图14所示,可以根据不同的框架,来设计不同的加载方式,让等待过程更短或更愉悦。

 

图14 根据技术框架来设计加载方式

 

记住,当你在学习一些实际的代码时,您可以在 Codepen.io 上交互式地执行代码。如果你还在学习
ES6 ,您可以看看如何使用 Babel
REPL 进行转译。

四、设计与技术的权衡

(1)明确设计方案的主流程

在技术面前,设计是否只能妥协呢?答案是否定的,在对应的App技术框架下,我们在考虑设计方案时,要明确设计方案的主流程和支流程(图15),凡是会影响到方案核心的主流程的方案,即使开发的实现难度和成本较高,我们也要持续推动技术的突破,来为用户提供更好的使用体验,而对于方案的支流程,我们就可以跟开发协商不同的解决方案,明确哪些地方可以调整技术实现方式或换一种设计方案,哪些方案存在风险,需要有备选方案

 

图15 设计方案的主流程和支流程

如图16所示,在设计手机淘宝店铺的标签模块时,由于大部分商家会根据宝贝图的特点,来设置图上标签的内容和位置,可是,由于店铺的技术框架不支持标签移动的功能,而我们的设计目标和方案的主流程就是要为商家提供更灵活设置宝贝标签的功能,所以即使技术实现难度和成本较高,我们也推动技术进行突破,实现标签的可移动功能。

 

图16 店铺的标签模块

(2)提前与开发沟通设计想法的可行性

我们分析完产品需求后,可以先简单地在纸上画出粗犷的交互原型,然后,跟开发沟通想法的可行性及实现难度,做到心中有数。如果方案中涉及动效设计,可通过纸片来录制粗略的动效,或拿出自己平时收集的动效素材(图17)与开发沟通可行性,来快速验证设计想法。

 

图17 动效素材

Node.js+MongoDB 这个比较热门

MAVEN

 

这个列表很长,但不要气馁。你可以做到!
在看这个清单列表时,如果你担心你将如何学习所有构建现代应用程序所需知识,那么建议你先阅读一下 “为什么我要感谢
JavaScript
疲劳” 。然后静下心来,开始学习和工作。

五、设计小结

“世上没有完美的设计,因为你最终能做的就是在各种关系之间取得平衡”
  ——Paul Rand(美国著名设计师)

在项目中,设计师往往需要权衡商业目标、用户体验和技术实现三者之间的关系来做设计方案,以上只是介绍App技术框架的基本知识,让设计师在做方案时更有把握,但由于技术日新月异,每天都在进步中,所以在实践中需要根据项目的不同阶段与开发工程师保持紧密的沟通,来让设计方案更靠谱。

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object
Model),一组标

Service

可选学习标记

有些东西严格的说是 可选的* ,这意味着,如果您对他们感兴趣,我推荐它们,或者你的工作需要了解它们,但你不应该觉得必须去学习它们。任何标有星号的东西(例如:example*)都是可选的。

任何没有带 * 的东西都应该学习,但是不要觉得要学习一切或知道一切。应该有一个很好的认知,不一定需要成为一名各个领域都出众的专家。

准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency
Managem

  1. Web API
  2. WCF
  3. WCF with ODATA
  4. WorkFlow Services
  5. SignalR for Two-way Communication
  6. LightSwitch

JavaScript & DOM基础知识

在尝试以 Javscript 为生,进行工作之前,您应该对 Javascript
的基础知识有深刻的了解:

  • ES6 :当前最新版本的
    JavaScript 是 ES2016(又名 ES7 ),但很多开发人员还没有正确学习 ES6
    。是时候学习是 ES6
    要点 了:
    Arrow functions(箭头函数) ,rest(剩余参数) / spread(扩展操作符)
    ,default parameters(默认参数) , concise object
    literals(对象字面量) ,destructuring(解构),解构等等…
  • Closures(闭包) :了解
    JavaScript 函数作用域的基本特性。
  • 函数 和 pure
    functions(纯函数)
    :你可能以为你已经很好地掌握了函数,但是
    JavaScript 有一些技巧,您需要了解 纯函数 来掌握函数式编程。
  • Functional programming
    basics(函数式编程基础)
     :函数式编程通过组合数学中的函数来生成一个大的程序,避免共享状态和可变数据。多年以来,我还没有看到一个大量使用函数式编程的
    JavaScript 应用程序。是时候掌握基本原理了。
    (愚人码头注:可以看看知乎上的这个回答:)
  • Partial application(局部应用) 和
    Curry(柯里化)
  • Builtin methods(内置方法) :学习标准的数据类型
    (特别是 arrays , objects , strings ,
    和 numbers )。
  • Callbacks(回调):
    回调是一个函数,当另一个函数有结果就绪时立即执行。
    就像你说,“做你的工作,做完后打电话给我。”
  • Promises :
    promise 是处理未来值的一种方式。当函数返回 promise
    时,您可以使用 .then() 方法附加回调,这个回调将在 promise
    resolves时运行。resolved
    值被传递到你的回调函数中,例如:doSomething().then(value => console.log(value));

JavaScript 代码:

  1. const doSomething = (err) => new Promise((resolve, reject) => {
  2. if (err) return reject(err);
  3.  
  4. setTimeout(()
    => {
  5. resolve(42);
  6. }, 1000);
  7. });
  8.  
  9. const log = value => console.log(value);
  10.  
  11. // 使用返回的 promises
  12. doSomething().then(
  13. // 当 resolve 时:
  14. log, // logs 42
  15. // 当 reject 时(resolve
    时不会调用)
  16. log
  17. );
  18.  
  19. // 记得处理错误哦!
  20. doSomething(new Error(‘oops’))
  21. .then(log) // not called this
    time
  22. .catch(log); // logs ‘Error:
    oops’
  • Ajax & server API calls (Ajax 和
    服务器API调用)
     :
    那些有趣的应用程序最终需要与网络服务器通信。 你应该知道如何与 API
    进行通信。
  • Classes (注意: Avoid
    class
    inheritance(避免类继承)
    。查看 How
    to Use Classes and Sleep at
    Night(如何使用类才能晚上睡个好觉).)
  • Generators & async/await 在我看来,最好的异步代码的写法就是用写同步代码的方式去写异步代码。不可否认这些都存在学习曲线,但一旦你学会了,代码将更容易阅读。
  • Performance(性能)RAIL — 从 “PageSpeed
    Insights”> & “WebPageTest.org” 开始,他们会给你一些建议
  • Progressive Web Applications (PWAs) : 查看 “Native Apps are
    Doomed” & “Why
    Native Apps Really Are
    Doomed”

  • Node &
    Express

    Node 允许你在服务端运行 JavaScript
    ,这意味着您的用户可以将数据存储在云中并随时随地访问。而 Express 是
    Node 社区最为流行的 Web 框架。

  • Lodash :一个很好用的、模块化的
    JavaScript
    实用工具函数库,包含功能编程的好东西,你可以通过 lodash/fp 导入 data-last 功能模块。

  • 工具

    • Chrome Dev
      Tools
      :DOM
      inspect & JS
      debugger:
      最为好的调试工具,虽然 Firefox
      也有很多非常酷的工具,你也可以去体验一下。
    • npm:JavaScript
      语言公然的开源包仓库库。
    • git & GitHub :
      分布式版本管理系统,随时跟踪你源代码的变化。
    • Babel :用于将 ES6 代码转译到 ES5
      以使之能够兼容老版本浏览器。
    • Webpack : 最流行的标准
      Javascript打包工具,通过一个简单的配置文件,就能快速让项目运行。
    • Atom** ,[VSCode](),或者 [WebStorm]() + [vim**](
      你需要为自己选择一个合适的编辑器来辅助你快速开发。Atom 和 VSCode
      是当今最流行的 JS 编辑器。 Webstorm
      是另一种解决方案,它对质量工具的支持非常强大。我建议学习 vim
      ,或至少加入到你的收藏书签,因为迟早,你需要在服务器上编辑文件,掌握
      vim 是最简单的方法 – vim 安装在几乎所有的 Unix
      兼容的操作系统,通过 SSH 终端连接可以很好的运作。
    • ESLint:
      尽早发现语法错误和代码风格问题。除了代码评审和TDD之外,这是你可以做的第三件事,尽量减少代码中的Bug。
    • Tern.js:标准 JavaScript
      类型的推理工具,这是我目前最喜欢的类型相关的 JavaScript 工具 –
      不需要编译步骤或注释。我踢掉了其他相关工具,Tern.js
      提供了大部分的功能,并且几乎没有为 JS 使用静态类型系统的成本。
    • Yarn:
      类似于npm,但是安装起来更为可靠快速。
    • *::静态类型的JavaScript。除非你学习 Angular
      2+,否则是完全可选的。如果你不使用 Angular 2+
      ,你应该在选择学习之前要仔细评估。我非常喜欢它,我很钦佩
      TypeScript
      团队的出色工作,但是你需要知道一些权衡。必读:“关于静态类型的惊人秘密”
      和 “你可能不需要
      TypeScript”
    • Flow*:
      JavaScript静态类型检测工具,可以阅读 “TypeScript vs
      Flow” 来对于这二者有个大概的了解,请注意,我让
      Flow 来反馈给我的 IDE
      有一些困难,即使使用Nuclide。
    • (转)

ent System),和用来运行定义在生命周期阶段中插件目标的逻辑。

Web Apps for Small/Medium Businesses

当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以

  1. LightSwitch
  2. Web Forms
  3. ASP.NET MVC

应用横切的逻辑,这些逻辑来自一组共享的插件

Building for Windows Desktop

JIRA

  1. WinForms
  2. WPF

JIRA是Atlassian公司出品的项目与事务跟踪工具,被广泛应用于缺陷跟踪、客户服务、需求

Web Applications in the Enterprise

收集、流程审批、任务跟踪、项目跟踪和敏捷管理等工作领域

  1. ASP.NET MVC

Spring Batch

Desktop Applications in the Enterprise

Spring
Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数

  1. WPF
  2. WinForms
  3. C++ with either Win32 or MFC

据处理系统。

 

Spring
Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级

服务。

Spring
Batch可以提供大量的,可重复的数据处理功能,包括日志记录/跟踪,事务管理,作

业处理统计工作重新启动、跳过,和资源管理等重要功能

Druid

阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性

能更好

简单使用介绍

Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部

配置给DataSource对象

shiro1.2.2Apache
Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和

会话管理等功能:

认证 – 用户身份识别,常被称为用户“登录”;

授权 – 访问控制;

密码加密 – 保护或隐藏数据防止被偷窥;

会话管理 – 每用户相关的时间敏感的状态

一般项目主要应用技术组件

  1. Spring (是一个轻量级的控制反转和面向切面的容器框架)

  2. SpringMVC(一个使用简单,学习成本低的MVC框架)

  3. MyBatis(一个基于SQL Maps和Data Access Objects支持普通
    SQL查询,存储过

程和高级映射的优秀持久层框架)

  1. Redis (是一个高性能的key-value的NoSQL数据库)

  2. mongoDB(一个查询功能比较强大,能存储海量数据的非关系型数据库)

  3. FastJson(高效能的json处理框架)

  4. Jakarta POI (提供了一组操作Windows文档的Java
    API,用于导出和写入Excel)

  5. BoneCP(是一个快速、免费而且开源的java数据库连接池(JDBC
    Pool)管理工具库;官方数

据说是C3P0的25倍左右)

9.
LogBack(日志框架,基于log4j,Logback的内核重写了,在一些关键执行路径上性能提

升10倍以上。而且logback不仅性能提升了,初始化内存加载也更小了。)

10.Maven(是一个基于项目对象模型,可以通过一小段描述信息来管理项目的构建,报

告和文档的软件项目管理工具)

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 实时系统组合

从Hadoop到Spark的架构实践

Disconf 可以为各种业务平台提供统一的配置管理服务。

支持配置的分布式化管理

配置发布统一化

极简的使用方式(注解式编程 或 XML代码无代码侵入模式)

低侵入性或无侵入性、强兼容性

需要Spring编程环境

hbase是从 hadoop中分离出来的apache顶级开源项目。

由于它很好地用java实现了google的bigtable系统大部分特性,因此在数据量猛增的今天非

常受到欢迎。对于淘宝而言,随着市场规模的扩大,产品与技术的发展,业务数据量越来越

大,对海量数据的高效插入和读取变得越来越重要。由于淘宝拥有也许是国内最大的单一ha

doop集群,因此对hadoop系列的产品有比较深入的了解,也就自然希望使用hbase来做

这样一种海量数据读写服务。本篇文章将对淘宝最近一年来在online应用上使用和优化hbas

e的情况做一次小结

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 是小米运维部开源的一款互联网企业级监控系统解决方案.

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 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.

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图