SpringCloud1-入门
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
集群/分布式集群是多台计算机为了完成同一个工作,组合在一起达到更高的效率的系统
分布式是为了完成一个工作,将工作拆分为多个服务,分别运行在不同机器上的系统
分布式系统的CAP理论强一致性、高可用性、分区容错性无法同时达到极致
强一致性指的是多个节点间的数据是实时一致的
高可用性指的是单位时间内我们的分布式系统能够提供服务的时间
分区容错性指的是分布式系统中一部分节点出现问题以后,我们仍然可以提供正常服务。
SpringCloud的基础功能
服务治理:Eureka
客户端负载均衡:Ribbon
服务容错保护:Hystrix
声明式服务调用:Feign
API网关服务:Zuul
分布式配置中心:Config
Eureka(服务治理)这是一个根据服务名字提供IP和端口的服务器,和DNS服务器比较像,我们的节点分为3类,服务提供者、服务消费者、EurekaServer
服务提供者这些 ...
内网穿透
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
问题提出最近在我的世界群里面看到他们谈论游戏的时候,谈到了服务器上面,他们一谈服务器就是192.168.xxx.xxx, 这就让我很困惑,这不是局域网IP吗,你们是怎么玩到一起去的?
内网穿透就是一种技术,他可以让不同的局域网中的机器通过互联网互联
前置知识
IP:网络中的逻辑地址
域名: IP的别名
DNS服务器: 将域名转化为IP的服务器
DDNS服务器: 将域名转化为动态IP的服务器
NAT: 通过端口映射,让局域网中的多台机器共享一个IP的技术
正向Proxy: 你翻墙的时候,有一个服务器拦截你的请求,替你发给其他人
反向Proxy: 服务器集群被访问的时候,请求被拦截,然后被分发
内网穿透要解决的问题NAT就实现了局域网中的机器与外网中的机器通信的问题,但是通信只能由局域网内部发起
解决他我们在两个NAT之间构造一个索引服务器,用心跳机制让局域网内部IP在索引服务器上注册端口映 ...
SpringMVC1-开头
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
SpringMVC少写博客,多思考,多看官方文档, 那我就写一篇算了
更新: 写一篇是不可能写一篇的,这辈子都不可能只写一篇
# MVC
model(dao,service) + view(jsp) + controller(servlet)
## 实体类
我们的实体类可能有很多字段,但是前端传输的时候可能只会传输一两个数据过来,我们就没有必要吧前端传过来的数据封装成为一个实体类,这样很多字段都是空的,浪费资源,实际上我们会对pojo进行细分,分为vo、dto等,来表示实体类的一部分的字段
# 回顾jsp+servlet
## 创建项目
卧槽,还能直接创建一个空的maven项目,然后在其中创建子项目,惊呆了
maven-空骨架-name
导入公共依赖
12345678910111213141516171819202122232425262728<dependencies> ...
SpringBoot4-Web5-烂尾
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
需求员工列表|普通CRUD|restfulCRUD-|-|-查询|getEmp|emp…GET添加|addEmp?|emp…POST修改|updateEmp?|emp/{id}…PUT删除|deleteEmp?|emp/{id}…DELETE
架构|请求URL|请求方式-|-|-查询所有员工|emps|GET查询单个员工|emp/{id}|GET来到添加页面|emp|GET添加员工|emp|POST来到修改页面|emp/{id}|GET修改员工|emp|PUT删除员工|emp/{id}|DELETE
修改|updateEmp?|emp/{id}…PUT删除|deleteEmp?|emp/{id}…DELETE
1234567<footer th:fragment="copy">hello ...
操作系统IO
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
Linux的inode的理解每天进步一点点——Linux中的文件描述符与打开文件之间的关系Linux下文件描述符聊聊Linux 五种IO模型select、poll、epoll之间的区别总结select,poll,epoll实现分析—结合内核源代码select、poll、epoll之间的区别(搜狗面试)面试题 —— select poll epollJava中的NIONIO代码
分布式系统
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
集群的到来你为什么要使用集群? 如果一个问题可以在单机上解决,那就使用单机的方法,在使用分布式解决问题前,要充分尝试别的思路,因为分布式系统会让问题解决变得复杂
并行、容错、通信、安全/孤立
难以解决的局部错误
人们设计分布式系统的根本原因是为了获得更高的性能,你的集群到底发挥了多大的能力?1000台发挥了1000倍的能力吗?
如果一个系统,只需要提高几倍的机器的数量,就可以提高几倍的性能或者吞吐量,这就是一个巨大的胜利,因为不需要花高价雇程序员
并行比方有一个web服务器,一夜之间火了,上亿的人来访问,就需要更多的web服务器,可是当你的web服务器的数量增大以后,数据库又成为了瓶颈,限制了性能,你可以尝试更多的数据库,但是这又会问到其他问题。
容错假设每台计算机一年只坏一次,那么1000台计算机的集群,每天坏3台,计算机崩溃成为了常见的错误,各种问题,网络,交换机,计算机过热 ...
SpringBoot4-Web4-国际化
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
国际化
编辑国际化配置文件
使用ResourceBundleMessageSource管理国际化资源文件
在页面使用fmt:message取出国际化内容
创建resources/i18n然后创建login_zh_CN.properties 选择Resouerce BundleSpringBoot自动创建了管理国际化资源文件的组件
12345678910111213141516171819202122232425262728293031323334@Configuration(proxyBeanMethods = false)@ConditionalOnMissingBean(name = AbstractApplicationContext.MESSAGE_SOURCE_BEAN_NAME, search = SearchStrategy.CURRENT)@AutoConfigu ...
Kafka
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
Kafka概述定义Kafka是一个分布式的基于发布/订阅模式的消息队列,应用于大数据实时处理领域
消息队列的优点主要是解耦和削峰
解耦
可恢复,如果系统中一部分组件失效,加入队列的消息仍然可以在系统恢复后被处理
削峰
灵活,可动态维护消息队列的集群
异步
消息队列的两种模式点对点一对一,消费者主动拉取消息,收到后清除
发布/订阅模式一对多,消费者消费后,消息不会清除,当然也不是永久保留,
分两种,一个是发布者主动推送,另一个是消费者主动拉取,Kafka就是消费者主动拉取,
推送
拉取
不好照顾多个消费者的接受速度
主动拉取,由消费者决定
消费者要每过一段时间就询问有没有新消息,长轮询
基础架构Kafka Cluster 中有多个 Broker
Broker中有多个Topic Partion
每个Topic的多个Parttition,放在多个Brok ...
Docker-Zookeeper集群部署
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
创建工作目录123mkdir ~/DockerDesktopmkdir ~/DockerDesktop/Zookeepercd ~/DockerDesktop/Zookeeper
创建挂载目录1234567mkdir node1 mkdir node1/datamkdir node1/datalogcp -r node1 node2cp -r node1 node3cp -r node1 node4cp -r node1 node5
创建docker-compose.yml1vim docker-compose.yml
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172ver ...
SpringBoot4-Web3-SpringMVC
nexthexonextbutterflyvolantisyearnyiliashokaindigoapollolandscapecactusmateryicarusfluidmaterial
扩展SpringMVC123456789101112<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org ...