java分布式和一些重要工具的分享


本文是老师培训课程的一些总结~有什么不准确的地方,请各位大神不吝赐教!

SpringCloud分布式开发五大神兽

服务发现: Netflix Eureka
客户端负载均衡:Netflix Ribbon
断路器: Netflix Hystrix
服务网关: Netflix Zuul
分布式配置: Spring cloud Config

分布式CAP理论

C Consistency(一致性)
A Availability(可用性)
P Partition Tolerance(分区容错性)
p是基本要保证的,c与a不能同时满足,在c与a 之前权衡

Redis

部署集群的方式

  1. 主从
  2. 哨兵主从 e.g. setinal(阿里)
  3. redis 集群 3.0开始

redis VS memcache

  1. Redis支持数据的持久化,而Memcache不支持
    Redis可以按照配置文件中约定的规则把数据写到硬盘上,即便服务器宕机了,重启服务器后可以把数据重新从硬盘加载入内存,保证了数据的不丢失,持久化。
    Memcache没有这样的功能,数据完全存在于内存,服务器宕机,数据完全丢失。
    所以可以把一些不重要,经常访问的数据放入Memcache,即使丢了影响也不大。

  2. Reids支持多种数据类型
    Redis支持String(字符串), List(列表), Hash(哈希), Set(无序集合) 及 Zset(有序集合) 等数据类型。

  3. Redis支持主从集群
    Redis支持主从集群,而Memcache也支持集群,但集群的能力很弱。
    Memcache只有string类型的key和value

  4. Redis支持会话缓存
    cookie里的jsessionId

Eureka

Server - Client架构

特点

  • 通过定时任务去拿服务列表。client 要server发心跳,有心跳的代表存货,放到服务列表中
    (心跳就是http请求)
  • 有延时,服务死了还会等下次(默认90s)内无心跳才会才会从服务列表去除。
    解决:通过熔断 可利用 hytrix
  • 通过ribbon负载均衡
  • 高可用可通过两台或多台客户端互相注册 互相复制的方式
    (discoverClient)

核心代码

  • initScheduleTask
  • 服务之间调用:registry-fetch-interval
  • 是否显示主机ip:prefer-ip-address
  • 服务列表中每一个对象是通过双层map存储的 第一层map的key是service name,第二层key是instanceId

Feign

用于微服务之前接口调用,无感知就像调用内部接口,使用方便。Feign是由Netflix开发出来的另外一种实现负载均衡的开源框架,它封装了Ribbon和RestTemplate,实现了WebService的面向接口编程,进一步地降低了项目的耦合度。在主函数上加@EnableFeignClient,请求接口类上加@FeignClient即可使用。通过动态代理实现(jdk invocation proxy)

核心代码:

  • FeignClientRegistry
  • FeignClientFactoryBean
  • BeanFactory
  • Invocation Handler

基于http协议
ribbon 实现负载均衡

优点:

  1. Feign旨在使编程java Http客户端变得更容易。
  2. 服务调用的时候融合了 Ribbon 技术,所以也支持负载均衡作用。
  3. 服务调用的时候融合了 Hystrix 技术,所以也支持熔断机制作用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
* ezService一直在更新中。请从http://www.ezService.org/download/ezService.exe下载最新版本。 * 根据调查,多数使用者认为原先的价格过高,自2003年9月1日起ezService价格进行重大调整,仅为原来价格的30%! ezService是一个致力于简化分布式计算服务开发的框架。 简要介绍: 1. 使用ezService开发分布式数据库应用,可以大幅度简化应用服务器的开发,无须在建立COM+/SOAP Server应用上花费任何时间,也不需要费心管理数据库事务,只要具备熟练运用SQL的能力,理解SQL参数匹配规则即可写出复杂的分布式应用服务,使得入门级程序员也可以轻松负担服务开发任务。 2. ezService高级服务允许按照类pascal语法规则自由书写脚本,实现复杂业务逻辑,新版本可以支持自Borland Delphi 7导出的大量函数和对象。同时提供了对COM的直接支持,可以通过引用COM组件,与外部系统进行复杂的交互操作。 3. ezService内核为COM+,支持连接池(connection pooling)和对象池(object pooling)机制,自动支持分布式事务。 4. ezService使用ADO提供程序连接数据库管理系统,凡是提供良好的OLE-DB驱动的DBMS均可支持(目前已经在SQL Server和Oracle 8/9上通过用户验证)。 5. ezService使用名为ESDL(ezService定义语言)的(类似WSDL)XML发布文档,ESDL可以对外界发布ezService所开发服务的全部功能接口,使得第三方开发者也可以方便的了解服务,快速进行二次开发而无需了解服务细节。 6. 支持SOAP协议,提供一个ISAPI类型的Web Service,一个ASP.NET Web Service,可以直接将服务功能发布到Internet/Intranet,无须额外编程。 7. 未授权的ezService服务具备与授权版本完全相同的功能,仅会在执行时随机锁定3个用户身份验证帐号,其他功能不受影响。 8. 由于使用了COM+/SOAP技术,ezService可以被主流开发工具轻松调用,发行版本附带了可应用于Borland Delphi 7的一组VCL,使开发员可以迅速访问ezService服务。在Visual Studio .NET开发环境中也可以轻松使用类似技术。 其他介绍: ezService主要定位在以下四个方面:简化中小型分布式关系型计算服务开发、规范服务管理、创建完好设计契约、加速服务客户程序开发。集快速服务设计、服务即时发布、安全管理、跨系统协作于一身,是中小型分布式关系型数据库应用开发的一揽子解决方案,适应于快速搭建完备可靠的应用系统。 ezService所开发的应用服务定义,可以被立即登记到服务注册表中,无需任何繁琐设置即可被ezService客户程序以及支持COM+/SOAP的开发工具所访问。 ezServiceWeb Service服务提供者同时也是ezService系统平台的对外集成接口,遵循其WSDL声明,即可在各种外部系统中生成访问其数据的SOAP客户程序,通过完备的XML请求/响应定义,外部系统可以实现对ezService系统的数据读写访问。 新版本的ezService SE更换了脚本引擎,全面支持下列Delphi单元的绝大多数函数和类: - System - SysUtils - Windows - Classes - Types - TypInfo - Variants - VarUtils - DateUtils - DB - ADODB - ADOInt - DBClient - FMTBcd - IniFiles - MaskUtils - Math - Registry - SqlTimSt - StrUtils - SysConst 具备更强大的扩展能力。 更多内容,请访问作者主页:http://www.ezService.org 目前主页新增了论坛系统,欢迎访问留言: http://www.ezService.org/dvbbs
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值