【Architecture】3.面向复杂度架构设计 复杂度来源: 高性能, 高扩展, 高可用, 安全,成本。通过分析系统需求找到系统复杂的地方,然后设计方案。分库分表,缓存,集群,分片,微服务。架构设计是为降低软件系统复杂度。
[阿里面试]数据库索引 A:WHERE和JOIN中出现的列需要索引。MySQL对=,BETWEEN,IN,部分LIKE会使用索引。A:Hash索引适合等值查询,无法范围查询;不支持联合索引的最左匹配;大量重复键的情况会有hash冲突。A: B树虽然提高磁盘IO性能,但没有解决元素遍历效率低下的问题;B+树可以实现整树遍历,适合基于范围的查询。Q:和Hash索引比起来有什么区别?Q: 什么情况下适合建索引?Q: 为什么索引采用B+树?
[java架构直通][单体]#5_云服务器部署 JDKTomcat1. 前端部署端口:80002.后端部署端口:8088<Server port="8008" shutdown="SHUTDOWN">。 是tomcat 监听的关闭端口。<Connector connectionTimeout="20000" port="8088" protocol="HTTP/1.1" redirectPort="8443" useBodyEncodingForURI="true"/> pro
[java架构直通][单体]#4_个人中心 @ApiModel(value="用户对象", description="从客户端,由用户传入的数据封装在此entity中")public class CenterUserBO { @ApiModelProperty(value="用户名", name="username", example="json", required = false) private String username; @ApiModelProperty(value="密码", name="passwor.
[java架构直通][单体]#3_地址、订单、支付、定时任务 地址@Api(value = "地址相关", tags = {"地址相关的api接口"})@RequestMapping("address")@RestControllerpublic class AddressController { /** * 用户在确认订单页面,可以针对收货地址做如下操作: * 1. 查询用户的所有收货地址列表 * 2. 新增收货地址 * 3. 删除收货地址 * 4. 修改收货地址 * 5. 设置默认地址
[java架构直通][单体]#2_分类、推荐、搜索、评价、购物车 分类<resultMap id="myCategoryVO" type="com.imooc.pojo.vo.CategoryVO"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="type" property="type"/> <result column="fatherId" prop
[java架构直通][单体]#1_项目框架搭建 大型网站九大特点:- 高并发、流量大- 高可用- 大数据- 敏捷开发、迭代快- 用户体系庞大- 可持续升级- 安全防范- 弹性扩展- 吞吐量高、响应速度快大型网站设计宗旨:- 聚合分层- 集群- CDN- 分布式系统- 异步- 业务分离- 数据备份# 聚合工程mvn install 后,项目被真正创建为什么不用数据库外键?- 增删改的性能影响- 热更新- 降低耦合度- 数据库分库分表...
[java架构直通][Netty]#3_Netty打造RPC通信框架 # 客户端连接管理package com.bfxy.rapid.rpc.client;import java.net.SocketAddress;import java.util.Map;import java.util.concurrent.ConcurrentHashMap;import com.bfxy.rapid.rpc.codec.RpcRequest;import com.bfxy.rapid.rpc.codec.RpcResponse;import io.netty.b
[java架构直通][Netty]#2_Netty整合SpringBoot实战 --------------------------------------------------------------------# netty-common首先定义2个注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface Cmd { String cmd();}@Target(ElementType.TYPE)@Retention(RetentionPo...
[java架构直通][Netty]#1_Netty入门与提高 Netty已经使用在Hadoop的RPC框架Avro、JMS框架RocketMQ、Dubbo;整个Netty都是异步的,完全基于NIO实现。--------------------------------------------------------------------------------------------Netty极速入门通信步骤(服务端/客户端):- 创建2个NIO线程组(其一用于网络事件处理「与客户端连接」,其二进行网络通信读写)- 创建一个ServerBoo.
[RabbitMQ]3_高级特性 发送端确认机制单条同步确认(推荐)channel.confirmSelect()每发一条消息,调用channel.waitForConfirms()等待确认多条同步确认channel.confirmSelect()发送多条消息,调用channel.waitForConfirms()等待确认异步确认channel.confirmSelect()channel添加监听addConfirmListener消息返回机制消息发送后没有发现目标队列,中间件通知发送方,returnL
[RabbitMQ]rabbitMQ环境搭建 安装rabbotMQbrew install rabbitmqdocker run -it --rm --name rabbitmq -p 5672:5672 -p 15672:15672 rabbitmq:3-management启动前端插件rabbitmq-plugins enable rabbitmq-managementlocalhost:15672 user:guest pass:guest
[RabbitMQ]1_AMQP Brokerr:接收和分发消息Virtual Host:虚拟Broker,将多个Broker隔离Connection:publisher/consumer和broker间的TCP连接Channel:connection内部建立的逻辑连接,连接每个线程创建单独的channelRouting Key:指示消息的路由转发Exchange:交换机Queue:消息队列Binding:exchange和queue间的虚拟连接,用于message分发依据Exchange共4种类型:Direct..
[hadoop][Azkaban]#2_Two-Server mode https://azkaban.readthedocs.io/en/latest/getStarted.html#getting-started-with-the-multi-executor-server
[hadoop][Azkaban]#1_azkaban快速入门 Dependency作业# foo.jobtype=commandcommand=echo foo# bar.jobtype=commanddependencies=foocommand=echo bar2个文件打包为ziphdfs作业# hdfs.jobtype=commandcommand=hadoop fs -ls /打包为zipmapreduce作业# ...
[hadoop][Azkaban]#0_azkaban环境搭建 编译安装在github下载源码包./gradlew build installDist为加快编译,将gradle-4.6-all.zip放在/root/Downloads/azkaban-3.81.0/gradle/wrapper中,在gradle-wrapper.properties修改distributionUrl将azkaban-solo-server/build/distribu...
[elastic][ES]#0_ES部署 Running ES in dockerdocker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:...