负载均衡与高可用

news2024/9/30 23:35:04

目录

负载均衡

理论部分

应用层负载均衡

环境搭建

代理服务器配置

web服务器配置

验证

网络层负载均衡

环境搭建

代理服务器配置

mysql服务器配置

验证

高可用

理论部分

环境搭建

负载均衡高可用

lb1主要服务器配置

lb2备份服务器配置

web配置

验证

nginx故障问题


                        →→→→ 大虾好吃吗

       本次负载均衡与高可用分别实验。

        负载均衡实验目标:本次实验分为两个部分;1.应用层负载均衡:客户端通过代理服务器访问web1和web2。2.网络层负载均衡:客户端通过代理服务器远程连接web1和mysql服务器。

拓扑图如下:

 

负载均衡

理论部分

1. 代理和负载均衡:

        代理负责把连接请求直接转发到后台某个web节点。

        负载均衡负责把请求使用某种调度算法分散发布给后台所有web节点。

2. 负载均衡(Load Balance),简写LB

        面对高并发web请求,使用各种调度算法(rr,wrr,lc,wlc,ip_hash),分散转发到后台web群集节点,提高数据吞吐量,高容灾。

        (ip_hash是根据用户请求过来的ip,然后映射成hash值,然后分配到一个特定的服务器里面)。

3. 常见的LB

        软件:lvs  nginx   haproxy   

        硬件:F5

        云LB:阿里云SLB    腾讯云CLB   青云QLB   ucloud ULB

4. 实现方式

        四层负载:ip地址    tcp/udp  端口号

        七层负载:HTTP  https  ftp   SMTP

应用层负载均衡

拓扑图如下:

  

环境搭建

        三台服务器均需要安装nginx并启动,下面以一台为例。

[root@lb1 ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force

[root@lb1 ~]# systemctl start nginx

[root@lb1 ~]# systemctl enable nginx

代理服务器配置

1. 编辑配置文件

[root@lb1 ~]# cd /etc/nginx/conf.d/

[root@lb1 conf.d]# ls

default.conf

[root@lb1 conf.d]# rm -rf default.conf             //删除默认配置文件

[root@lb1 conf.d]# vim lb.conf                     //新建配置文件

upstream web {

        server 192.168.1.5:80;

        server 192.168.1.6:80;

        }

server {

        listen 80;

        server_name www.test.com;



        location / {

                proxy_pass http://web;             //代理web模块中的主机
    
                include nginx_params;              //包含nginx_params中的配置文件,该配置文件表示创建优化项,网站配置文件直接调用。也可以把文件中的内容写在当前行,但稍显紊乱。

                }

        }

2. 创建优化项文件,网站配置文件直接调用(选用,但推荐使用)。

[root@lb1 conf.d]# vim /etc/nginx/nginx_params

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;



proxy_connect_timeout 30;

proxy_send_timeout 60;

proxy_read_timeout 60;



proxy_buffering on;

proxy_buffer_size 32k;

proxy_buffers 4 128k;

[root@lb1 conf.d]# systemctl restart nginx

3. nginx_params参数介绍

proxy_set_header Host $http_host;                                                         ​​​​​​​        ​​​​​​​        #重新定义或者添加发往后端服务器的请求头

proxy_set_header X-Real-IP $remote_addr;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        #启用客户端真实地址(否则日志中显示的是代理在访问网站)

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;        ​​​​​​​               #记录代理地址

proxy_connect_timeout 30; (单位:秒,默认60秒)         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​               #代理和后端服务器连接超时时间

proxy_send_timeout 60;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                 #后端服务器传回代理的超时时间

proxy_read_timeout 60;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​         #代理等待后端服务器的响应时间

proxy_buffering on;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​       #启用缓存,后端返回内容先缓存,再给客户端,收到多少转多少

proxy_buffer_size 32k;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        #代理缓存用户头信息的缓存区大小

proxy_buffers 4 128k;         ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        #缓存区的设置

proxy_busy_buffers_size 256k;          ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​                             #从proxy_buffers划出一部分缓冲区来专门向客户端传送数据的地方

proxy_max_temp_file_size 256k;            ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        #超大的响应头存储成文件。

4. 负载均衡后端状态

weight                                         权重,默认为1

down                                           当前节点服务器不参与负载均衡

backup                                        备份服务器

max_fails                                    允许请求失败的次数

fail_timeout                                 经过max_fails失败后,服务的暂停时间

max_conns                                 同一ip最大连接数

例如:

        下面配置选做,了解参数即可。修改配置文件,可加多个参数。

[root@lb1 ~]# vim /etc/nginx/conf.d/lb1.conf

修改为:

upstream web_cluster {

        server 192.168.1.5:80 max_fails=2 fail_timeout=10s max_conns=1;  

        server 192.168.1.6:80 down; //一般用于停机维护

}

web服务器配置

1. web1配置

        web1配置和web2配置基本相同,配置web1后可以使用scp命令复制到web2,但实验过程中网页内容需要区分。成产环境中的网页内容一般都是一致的(例如使用nfs或gfs等)。

[root@web1 ~]# cd /etc/nginx/conf.d/

[root@web1 conf.d]# rm -rf default.conf 

[root@web1 conf.d]# vim web.conf

server {

        listen 80;

        server_name www.web.com;                 //本次不需要使用虚拟主机,域名随意填写即可

        location / {

                root /www;

                index index.html;

                }

        }

[root@web1 conf.d]# nginx -t

[root@web1 conf.d]# mkdir /www                         //创建网站根目录

[root@web1 conf.d]# echo "192.168.1.5" > /www/index.html             //创建网页内容

[root@web1 conf.d]# systemctl restart nginx

2. web2配置

        web1已经配置,scp命令复制过来即可。

[root@web2 ~]# scp -rp root@192.168.1.5:/etc/nginx/* /etc/nginx/

[root@web2 ~]# cd /etc/nginx/conf.d/

[root@web2 conf.d]# ls //查看是否存在nginx默认首页

default.conf  web.conf

[root@web2 conf.d]# rm -rf default.conf //删除nginx默认首页

[root@web2 conf.d]# mkdir /www //创建网站根目录

[root@web2 conf.d]# echo "192.168.1.6" > /www/index.html //创建网页内容

[root@web2 conf.d]# systemctl restart nginx

验证

        客户端访问代理服务器http://192.168.1.4,经过多次刷新可以看到下图页面。如果通过网页访问辨别不出来可以使用命令tail -f /var/log/nginx/access.log辨别。

 

网络层负载均衡

拓扑图如下:

 

环境搭建

        根据上图代理服务器和web1安装nginx和一台mysql数据库,nginx安装以代理服务器为例。注意分清主机名称】

[root@lb1 ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force

[root@lb1 ~]# systemctl start nginx

[root@lb1 ~]# systemctl enable nginx

[root@mysql ~]# rpm -ivh /media/mysql5.6-rpm/* --nodeps --force

[root@mysql ~]# systemctl start mysqld

[root@mysql ~]# systemctl enable mysqld

[root@mysql ~]# mysqladmin -uroot password

New password: //输入新密码

Confirm new password: //再次输入新密码

代理服务器配置

[root@lb1 ~]# vim /etc/nginx/nginx.conf         //将下面字段插入http字段上方

stream {

        upstream sshweb1 {

                server 192.168.1.5:22;

        }

        upstream mysql {

                server 192.168.1.7:3306;

        }



        server {

                listen 5555;                     //监听5555端口
    
                proxy_pass sshweb1;              //如客户端访问5555端口将指定web1主机

                proxy_connect_timeout 30;

                proxy_timeout 60;

        }

        server {

                listen 7777;                      //监听7777端口

                proxy_pass mysql;                 //如客户端访问7777端口将指定mysql主机

                proxy_connect_timeout 30;

                proxy_timeout 60;

        }

}

[root@lb1 ~]# nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@lb1 ~]# systemctl restart nginx

mysql服务器配置

        mysql服务器需要被连接,可以先创建一个库并创建一个新用户。

[root@mysql ~]# mysql -uroot -p123456

//省略部分内容

mysql> create database bbs;

Query OK, 1 row affected (0.00 sec)

mysql> grant all on bbs.* to bbs@'%' identified by '123456';

Query OK, 0 rows affected (0.00 sec)

mysql> exit

Bye

验证

        测试机访问代理服务器,分别使用linux端,xshell端,win端测试

1. 测试连接web1

linux端测试如下:(linux端和xhell端)

 

xshell端测试如下:

 

2. 测试连接数据库

        win端连接数据库测试工具有很多,如SQLyog、navicat等,本次使用SQLyog通过代理服务器连接mysql数据库。win客户端打开SQLyog软件,出现下图所示内容,添加代理服务器IP,mysql用户名密码及端口号点击连接即可。

 

        登录后可以看到刚刚在myslq服务器中创建的库,现在就可以进行编辑查看表了。

 

高可用

        高可用实验目标:本次实验分为两个部分,①在两台lb服务器上搭建nginx和keeplived,实现负载均衡器的高可用。模拟网站服务器损坏,使用客户机访问网站依然正常访问。②解决高可用裂脑问题。

拓扑图如下:

 

理论部分

1. 高可用作用:增加容错性(HA:High availability)

2. 协议:  VRRP(虚拟路由冗余协议) 公有协议  224.0.0.18 

                 HSRP(热备份路由协议)   私有协议,Cisco公司 224.0.0.5 224.0.0.6

3. 高可用软件:

        keepalived:使用vrrp实现多台主机高可用群集

        高可用角色:master 主服务器 、backup 备服务器

4. 高可用裂脑

        高可用节点之间互相失去联系,自认为自己是主服务器,就会出现多主现象,即裂脑现象。

裂脑出现的原因:

        心跳线松动或网卡故障。

        服务器硬件故障,崩溃。

        节点服务器开启防火墙,却没有做vrrp例外。

        nginx服务死掉,不会出现裂脑现象,但整个集群都无法正常运作。

环境搭建

        根据拓扑图安装服务,lb1和lb2都需要安装nginx及keepalived,下面以lb1为例,两台web服务以web1为例。

lb搭建

[root@lb1 ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force

[root@lb1 ~]# yum -y install keepalived

[root@lb1 ~]# systemctl start nginx keepalived

[root@lb1 ~]# systemctl enable nginx keepalived

web搭建

[root@web1 ~]# rpm -ivh /media/nginx-rpm/* --nodeps --force

[root@web1 ~]# systemctl start nginx

[root@web1 ~]# systemctl enable nginx

负载均衡高可用

lb1主要服务器配置

1. 通过搭建实现两台负载均衡器的高可用,过多不在介绍,详情请查看代理服务器配置​​​​​​​

[root@lb1 ~]# cd /etc/nginx/conf.d/

[root@lb1 conf.d]# rm -rf default.conf 

[root@lb1 conf.d]# vim lb.conf

upstream web {

        server 192.168.1.6:80;

        server 192.168.1.7:80;

        }

server {

        listen 80;

        server_name www.lb.com;

        location / {

        proxy_pass http://web;

        include nginx_params;

                }

        }

[root@lb1 conf.d]# vim /etc/nginx/nginx_params

proxy_set_header Host $http_host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;



proxy_connect_timeout 30;

proxy_send_timeout 60;

proxy_read_timeout 60;



proxy_buffering on;

proxy_buffer_size 32k;

proxy_buffers 4 128k;

[root@lb1 conf.d]# systemctl restart nginx

2. 修改keepalived配置文件

[root@lb1 ~]# vim /etc/keepalived/keepalived.conf

global_defs {

//省略部分内容

router_id lb1         //该配置为主机名称,

vrrp_strict         //删除此行内容,路由器中vrrp的一些协议,linux中没有所以需要删掉

//省略部分内容

}

vrrp_instance VI_1 {

    state MASTER         //编辑为主要服务器

    interface ens33         //修改网卡为ens33

    virtual_router_id 51

    priority 100         //选举优先级,100为最高

    advert_int 1

    authentication {         //验证模块不需要修改,主备需相同

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

        192.168.1.200         //添加漂移地址

    }

}

[root@lb1 ~]# systemctl restart keepalived

lb2备份服务器配置

        lb1服务器已经配置了网页通过scp命令复制过来即可。

[root@lb2 ~]# scp -rp root@192.168.1.4:/etc/nginx/* /etc/nginx

[root@lb2 ~]# cd /etc/nginx/conf.d/

[root@lb2 conf.d]# ls

default.conf  lb.conf

[root@lb2 conf.d]# rm -rf default.conf         //删除默认网页

[root@lb2 conf.d]# systemctl restart nginx

web配置

        web1和web2配置相同下面以web1为例,相关配置参考web服务器配置

[root@web1 ~]# cd /etc/nginx/conf.d/

[root@web1 conf.d]# rm -rf default.conf 

[root@web1 conf.d]# vim web.conf

server {

        listen 80;

        server_name www.web.com;         //本次不需要使用虚拟主机,域名随意填写即可

        location / {

                root /www;

                index index.html;

                }

        }

[root@web1 conf.d]# nginx -t

[root@web1 conf.d]# mkdir /www         //创建网站根目录

[root@web1 conf.d]# echo "192.168.1.6" > /www/index.html         //创建网页内容,web2网页内容设置为192.168.1.7

[root@web1 conf.d]# systemctl restart nginx

验证

        客户端访问http://192.168.1.200,刷新两次可以看到web1和web2的网站内容。

 

        测试关掉lb1主机访问漂移地址,查看lb2的主机是否获取漂移地址。

 

        通过上图可以看到漂移地址已经到lb2主机上,访问http://192.168.1.200是否能正常访问。

 

        开启lb1主机,查看漂移地址是否又回到本机中。

 

 

        经过上面的测试已经配置成功负载均衡的高可用功能,下面将进行解决nginx故障问题详情请看理论部分

nginx故障问题

        关闭lb1服务器的nginx服务并访问漂移地址,发现漂移地址依旧在lb1上故而服务访问不了网站。下面就解决lb1服务器nginx故障造成无法访问的问题。

[root@lb1 ~]# systemctl stop nginx 

 

[root@lb1 ~]# systemctl start nginx

[root@lb1 ~]# vim /sh/check_nginx_proxy.sh

#!/bin/bash

killall -0 nginx

if [ $? -ne 0 ];then

        systemctl stop keepalived

fi

[root@lb1 ~]# chmod +x /sh/check_nginx_proxy.sh

[root@lb1 ~]# vim /etc/keepalived/keepalived.conf 

! Configuration File for keepalived



global_defs {

//省略部分内容

   router_id lb1

//省略部分内容

}

vrrp_script check_nginx_proxy {         //添加模块内容

        script "/sh/check_nginx_proxy.sh"

        interval 2

        weight 5

}

    state MASTER

    interface ens33

    virtual_router_id 51

    priority 100

    advert_int 1

    authentication {

        auth_type PASS

        auth_pass 1111

    }   

    virtual_ipaddress {

        192.168.1.200

    }   

    track_script {         //在实例内启用脚本模块

        check_nginx_proxy

    }   

}  

[root@lb1 ~]# systemctl restart keepalived

        模拟损坏nginx,测试结果。

[root@lb1 ~]# systemctl stop nginx

        分别再lb1和lb2上查看漂移地址,可以看到lb1上nginx损毁后,漂移地址已经到lb2上。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/54906.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【MySQL】-增删查改

作者:学Java的冬瓜 博客主页:☀学Java的冬瓜🌙 专栏:MySQL 分享:至若春和景明,波澜不惊,上下天光,一碧万顷。沙鸥翔集,锦鳞游泳,岸芷汀兰,郁郁青青…

傻妞旧版合集新版订阅

目录一、前言二、下载三、新版傻妞订阅合集一、前言 傻妞旧版本(合集),包含amd和arm版本收集于TG 我的是amd架构 [rootecs-mike_note ~]# cat /proc/version Linux version 4.11.8-1.el7.elrepo.x86_64 (mockbuildBuild64F25) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11…

Vue中的计算属性

计算属性&#xff1a;实际上是把vm中的属性进行计算加工&#xff0c;最后能够返回给页面一个结果 细想一下&#xff0c;其实methods方法也能实现1中描述的现象&#xff0c;但是计算属性最大的优势是缓存&#xff01;&#xff01;&#xff01; 举个例子 <div id"root&q…

【Android App】物联网实战项目之自动驾驶的智能小车(附源码和演示 超详细)

需要源码请点赞关注收藏后评论区留言私信~~~~ 当今社会正在步入一个万物互联的时代&#xff0c;它的技术基石主要来自5G、物联网和人工智能。 三者融合产生了许多新产品&#xff0c;其中最璀璨的当数自动驾驶的电动车&#xff1b;它汇聚了最新科技与工程实践的成果&#xff0c;…

【收纳】电脑资料-高效整理电脑上的文件

以前没想过整理文件&#xff0c;一般都是建各种文件夹&#xff0c;然后把资料拖进去&#xff0c;好像收起来了&#xff0c;但实际是随着文件越来越多&#xff0c;时间一久&#xff0c;经常找不到文件&#xff1b;后来逐渐意识到&#xff0c;需要改变。于是找了很多方法&#xf…

已分区的硬盘如何重新合并, 分出去的盘怎么重新合并

已分区的硬盘如何重新合并&#xff1f;磁盘分区后合区是指对原磁盘的分区进行合并&#xff0c;使之成为一个的磁盘分区&#xff0c;从具体的应用层面来分析&#xff0c;为什么会对磁盘分区后合区呢&#xff1f; 磁盘管理对磁盘分区后合区 在Windows系统中&#xff0c;磁盘管理…

UGUI性能优化学习笔记(二)合批

一、合批规则 合批&#xff1a;把渲染时使用相同材质、相同贴图的网格合并在一起&#xff0c;成为一个大网格&#xff0c;然后再调用一次Draw Call&#xff0c;直接渲染这一个大网格。这样做可以降低Draw Call的数量&#xff0c;以优化性能。 Unity是如何确定哪些网格可以进行…

[附源码]JAVA毕业设计货币博物馆展品管理系统(系统+LW)

[附源码]JAVA毕业设计货币博物馆展品管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

常用框架技术- 08 Spring Cloud简单易懂、易部署和易维护的分布式系统开发工具包

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言1.微服务理论1.1 微服务的特点1.2 微服务与微服务架构1.3 微服务的优点2.分布式集群概念2.1 分布式集群概念2.1.1 什么是分布式2.1.2 什么是集群2.1.3 分布式集群…

新品上线 Naive Admin Tenant 开箱即用多租户开发框架

Naive Admin Tenant 是一套企业级的权限管理开发平台&#xff0c;采用前后端分离模式&#xff0c;微服务版本前端框架支持多个选择&#xff0c;支持数据库&#xff1a;MySql、Oracle、SqlServer、PostgreSql 等&#xff0c;目前只支持 MySql&#xff0c;后面有客户需求会扩展支…

三维数字沙盘大数据人工智能模拟对抗推演系统开发教程第一课

三维电子沙盘大数据人工智能模拟对抗推演系统开发教程第一课 该数据库中只提供 成都市火车南站附近的数据请注意&#xff0c;104.0648,30.61658 而且该公用服务器带宽不大&#xff0c;所以会有些卡顿&#xff0c;建议下载数据库后本地使用&#xff0c;下载后的数据库有些许变…

《InnoDB引擎八》InnoDB关键特性-两次写

InnoDB 关键特性 InnoDB存储引擎的关键特性包括&#xff1a; Insert Buffer (插入缓冲)Double Write (两次写)Adaptive Hash Index (自适应哈希索引)Async IO (异步IO)Flush Neighbor Page (刷新领接页) 这些特性为InnoDB存储引擎带来了更好的性能以及更高的可靠性。 两次写 …

STM32 定时器单脉冲模式的使用记录

一、我要解决的问题 我的需求 需要单片机几乎同时在A,B,C 三个IO 分别输出T1&#xff0c;T2&#xff0c;T3 时长的高电平&#xff0c;时间结束后&#xff0c;恢复低电平。 初步思路 面对这个需求&#xff0c;我第一时间想到的是用三个定时器&#xff0c;分别设置T1,T2,T3 时…

Win10解决:系统管理员已阻止你运行此应用

前言 Win10安装msi软件包时出现错误提示如下&#xff1a; 解决 按【winR】快捷键打开运行&#xff0c;输入gpedit.msc回车依次进入”Windows设置“—”安全设置“—”本地策略“–”安全选项“—”用户账户控制&#xff1a;以管理员批准模式运行所有管理员“—双击&#xf…

JUC系列(六) 线程池

&#x1f4e3; &#x1f4e3; &#x1f4e3; &#x1f4e2;&#x1f4e2;&#x1f4e2; ☀️☀️你好啊&#xff01;小伙伴&#xff0c;我是小冷。是一个兴趣驱动自学练习两年半的的Java工程师。 &#x1f4d2; 一位十分喜欢将知识分享出来的Java博主⭐️⭐️⭐️&#xff0c;擅…

若依 数据权限图文详细理解及改造

数据权限 所谓数据权限&#xff0c;就是根据不同角色的登录用户&#xff0c;查看不同的列表数据 若依数据权限 若依的数据权限也是基于角色实现的&#xff0c;支持五种权限模式&#xff0c;按权限大小一次排列&#xff1a; 全部数据权限&#xff0c;表示拥有所有部门的数据…

远程办公:通过cpolar内网穿透,远程桌面控制家里公司内网电脑

疫情反反复复的当下&#xff0c;有时候会遇到需要居家办公的情况&#xff0c;但在办公室的电脑上仍有很多重要资料需要存取&#xff0c;且办公室所在的局域网中也有很多相关资源需要被访问&#xff08;如文件共享服务器、OA系统等&#xff09;。如何能在家通过远程处理好办公事…

Blend for Visual Studio 概述

https://learn.microsoft.com/zh-cn/visualstudio/xaml-tools/creating-a-ui-by-using-blend-for-visual-studio?viewvs-2022 Blend for Visual Studio 可用于设计基于 XAML 的 Windows 和 Web 应用程序。 它提供了与 Visual studio 相同的基本 XAML 设计体验&#xff0c;并添…

长安汽车董事长下场宣传原力技术 全擎引领电动化出行普及时代

11月30日&#xff0c;长安汽车董事长朱华荣在朋友圈发布了长安汽车擘画未来的全新能源及电动化解决方案&#xff1a;长安原力技术——原力智能增程、原力超集电驱。长安汽车成为业内首个通过微信朋友圈发布全新技术方案的车企。短短的3分钟视频&#xff0c;展露着长安汽车对技术…

Mand Mobile - 滴滴出品的适用于金融项目的 Vue 移动端 UI 组件库,免费开源、灵活快速、丰富实用

推荐一款可用性很强的移动 UI 组件库&#xff0c;交互细致&#xff0c;有不少直接就可以用的金融行业的组件。 关于 Mand Mobile Mand Mobile 是一款由滴滴前端团队出品、专为金融场景设计的移动端 Vue 2 组件库&#xff0c;可以帮助前端开发者快速构建项目&#xff0c;UI 风…