Java培训实训笔记(day2)

前言

第二天依旧概念性知识较多,主要是对以后的开发有提前的了解。

微服务架构:

 Spring Cloud (Spring Boot开发)
 微服务的三个角色与dubbo一样,都是: 服务注册中心、服务提供者、服务消费者

微服务与dubbo运行机制完全不同

  • dubbo基于RPC,在局域网提供高并发服务
  • 微服务使用HTTP协议,可以应用于广域网。微服务不是RPC,不是STUB/SKELETON模式。微服务的运行性能不如RPC,因此只有在中型电商才使用微服务架构。

某个服务掉线了:

  • dubbo是RPC,某个服务掉线,通过异常服务器马上会感知(socket异常)。注册中心又会马上通知消费者更新服务列表。在1秒钟之内,掉线的机器就不会被访问了。
  • 微服务使用HTTP,某个服务掉线,服务无法通知注册中心。通过心跳机制,注册中心感知服务是否正常。服务消费者定时访问注册中心,更新服务列表。从服务掉线,到更新服务列表,可能需要1分钟。

WEB服务:

可以穿透80防火墙,应用于广域网。它也是RPC架构模式。可以使用异构模式调用。
主要使用XML技术。它使用SOAP协议,依赖HTTP协议。

典型应用:12306身份验证(调用公安部的服务)


淘宝的数据库方案

早期用JavaEE的EJB + Oracle (满足千万级别的用户)
后期 Spring + dubbo + mysql (在开源基础上做定制开发)
现在: HSF + mysql + MongoDB + Hbase + Hadoop


报表:

水晶报表(收费)、 JasperReport(免费)、Office插件

报表与图表不同:

图表:echart, 柱状图、饼状语、折线图
报表:表头、标体(数据合成)


关于12306

12306采用Pivotal GemFire分布式解决方案 解决尖峰高流量并发问题

中国铁路客户服务中心12306网站选择Pivotal GemFire分布式内存计算平台改造方案,根据系统运行数据记录,在只采用10几台X86服务器实现了以前数十台小型机的余票计算和查询能力,单次查询的最长时间从之前的15秒左右下降到0.2秒以下,缩短了75倍以上
12306的复杂度远远高于淘宝

例:北京---哈尔滨 (中间有10站)
买票:任意一站A 到 站B

策略:优先卖长途的
余票查询是一个复杂的计算过程(并发的时候需要锁)
查询--锁定--付款,周期很长 (用乐观锁代替悲观锁)

中型12306系统架构(百万级用户):
(1)如何解决大量人员排队,造成线程非常紧张的问题
线程要进行CPU分片
排队时间很长,10万用户同时排队

解决参考:

  • 在WEB Server上建两个线程池。一个处理同步请求,一个处理异步请求。
  • 异步线程池
  • Interface AsyncContext
  • call to ServletRequest.startAsync() 获得异步环境对象
  • ServletResponse.getResponse()
  • 使用Class LinkedBlockingQueue进行抢票的请求排队

消息队列

当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMq等,而部分数据库如Redis、Mysql以及phxsql也可实现消息队列的功能。


JMS

JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消息服务是一个与具体平台无关的API,绝大多数MOM提供商都对JMS提供支持。
JMS是一种与厂商无关的 API,用来访问收发系统消息,它类似于JDBC(Java Database Connectivity)。这里,JDBC 是可以用来访问许多不同关系数据库的 API,而 JMS 则提供同样与厂商无关的访问方法,以访问消息收发服务。许多厂商都支持 JMS,包括 IBM 的 MQSeries、BEA的 Weblogic JMS service和 Progress 的 SonicMQ


RAC

RAC是real application clusters的缩写,译为"实时应用集群", 是Oracle新版数据库中采用的一项新技术,是高可用性的一种,也是Oracle数据库支持网格计算环境的核心技术。
Oracle RAC主要支持Oracle9i、10g、11g,12C版本,可以支持24 x 7 有效的数据库应用系统,在低成本服务器上构建高可用性数据库系统,并且自由部署应用,无需修改代码。


软件三层架构

分为表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)。

  1. 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
  2. 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
  3. 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、查找等。

一个业务逻辑方法,可以同时调用多个持久层方法

举例:
网上书城付款的业务方法,调用持久层账户扣款、生成订单、添加订单明细、减库存
事务特征,ACID

业务逻辑层最核心的是事务管理:本地事务、全局事务
不是所有的业务方法都需要事务管理,读操作是不需要的。

posted @ 2021-03-13 16:52  皆守  阅读(93)  评论(0)    收藏  举报