So, today what we will do is try to actually make a mathematically rigorous analysis of the laminar premixed flame problem what we have been doing so far is somewhat like a phenomenological construction of energy balance and mass balance looking at the preheat zone and the reaction zone separately in fact we went all the way up to even considering not only upstream diffusion of products and consequently a downstream production of reactant species concentration relative to the far upstream reactant concentration we also taken to an account the effect of non unity Lewis number of the reactants in trying to find out how the reactant concentration profiles are going to change because of that but however when you are now doing the rigorous analysis we start with the Schwab-Zeldawech formulation which means we have to go along with the 11 assumptions that that are attendant to the Schwab-Zeldawech formulation and then we make further assumptions hopefully only a few that is particular to this particular to this problem so further assumptions the first thing that we make is say somewhat a peculiar simplifying assumption which could be relaxed number of moles does not vary does not vary during the reaction so let us suppose that we have n a equals n b equals n and this this corresponds to saying so for example for a I should say n or for a for a let us say nth order or should say maybe just go to n for nth order rearrangement reaction such as like let us say n a equals n b b when you now say n a equal to n b then this actually implies that w a equal to w b so what basically happens is your mass fractions are equal so you do not have to worry about a further as a further equation that relates to mass fractions and most small fractions second is a we assume a calorically perfect gas now notice that we did not make this assumption as part of the Schwab-Zeldawech formulation we could still deal with a integral t reference to T CPT CP DT in the case of Schwab-Zeldawech in general that means you could assume a temperature varying specific heat but here we make a calorically perfect gas assumption that is CP equal to constant also essentially we are saying all thermal properties are constant k is a constant so let us assume that the thermal conductivity is a constant as well number three flame is one-dimensional and planar and steady of course steady state is assumed in the Schwab-Zeldawech but just we want to point out here that we are looking at a steady flame which is one-dimensional and planar that is assumption which is not very unrealistic if you think about for example if you had a slotted Bunsen burner you could actually have a conical flame and locally along the side of the cone or since a conical like a tent shape flame and locally along the side of the tent like the shoulder of the flame is reasonably planar course it does not look one-dimensional but we will notice later on that we should be able to actually take a component of the flow perpendicular to the flame and then treat the flow field across the flame locally like the way we are doing here so that this is this is a very reasonable assumption the other ones are obviously simplifying assumptions. So let us now proceed with how we would do the Schwab-Zeldawech so the Schwab-Zeldawech energy equation goes like take a divergence of rho V vector integral T superscript not to T Cp DT minus rho D gradient integral T superscript not T to T Cp DT equal to minus sigma equal to 1 to n ? hfi not wi is what we had we denote negative sigma i equals 1 to n ? hfi not wi as let us say WQ all right now that is kind of like a summation is equal to like reaction rate times the heat of reaction of course we are assuming a single step reaction as part of the Schwab-Zeldawech formulation course this was not the final energy equation that we derived the Schwab-Zeldawech this is what we had actually termed as the Schwab-Zeldawech energy equation while we do while we were doing the formulation so it is basically taken right from there we even form the coupling terms or the alphas and all those things at this stage but let us suppose that we can just proceed from here and then apply the one-dimensional apply this to one-dimensional situation then here we can now write this as rho U D by DX of Cp T minus T0 minus rho D D squared over DX squared Cp T minus T0 equal to WQ okay are we essentially the divergence has become like a D by DX and for a one-dimensional flow we know that rho U is a constant therefore we can actually pull this out because rho U is a constant we are together as a product we can pull that out of the derivative and then we evaluate the integral for a constant Cp and we also do the same thing over here and since it is one-dimensional we can write it as a ordinary derivative instead of a partial derivative because things are varying only along x which is in this direction across the flame okay then we write the Schwab-Zeldawech species equation for species A let us say that is the reactant there and so we now write for the species now what you will find when you now try to apply the Schwab-Zeldawech formulation is we do not necessarily solve the entire n plus 1 equations that we talked about where n is the total number of species involved okay although it would look like they were all coupled and we have to solve them simultaneously and so on what we are actually looking for is for equations to look identical so if equations begin to look identical then it is sufficient for us to solve one of the equations that are that is a part of the identical set instead of having to solve for all the equations simultaneously so this is how we simplify our lives instead of actually burdening ourselves with lots of equations to solve so here in the case of the prem explain we will see that for the moment it is actually sufficient for us to take the species A conservation alone we do not have to worry about lots of other species so here you have a divergence of Rho v y a- Rho d gradient y a equal to w a now since you have a same number of moles everywhere we can we can point out that w a equal to minus w b equal to minus w right so w b is rate of production of b w a is the rate of depletion of a and so rate of depletion of a should have a negative sign to denote the depletion if you are now writing it in terms of the general reaction rate w on a mass basis so here if you now try to unwrap the divergence and vector notation and so on fortunately we do not have an integral to evaluate in this case as in the energy so it should simplify as d by dx of y a- Rho d d squared y a over dx squared equals minus w a matter of fact I should point out that we are also assuming the Rho d to be constant by the way that that is not that sort of implicitly stated here because we are assuming d to be a constant and this is like an incompressible flow for the mixture density doesn't change so therefore and then of course we are not even bothering about the mixture density changing with temperature all right therefore we would actually suggest that Rho d is a constant and we can go through with the divergence all the way to the applying the gradient and therefore you get the second derivative here all right now we want to actually try to see if these two equations are looking alike in some way and this is what we also try to do when we did the Schwab-Zelovich formulation anyway right so here if you denote denote ? equal to Cp T-T0 divided by Q and as per equals 1- y a this is pretty interesting actually because for this is kind of obvious we want to get the Q down here I am sorry we want to get the Q down here okay and then you have essentially T is the one that is varying Cp the constant T0 to the constant but you have this T with all this paraphernalia like Cp times T-T0 together and then okay so we want now see that is like the variable now instead of the actual variable temperature and then we get this Q down here so that it will also have a W just there on the right hand side just as well as the species equation but the species equation has a negative sign with for the W therefore if you want to have only a W there all you need to do is to actually multiply this by a negative sign on the on the left hand side that means we should have actually been saying half is equal to minus y a not 1- y a so why were we looking at 1- y a this is a trick okay that that is not really highlighted in textbooks and so on what we are basically looking for something physical look at how we actually proceeded in the phenomenological development of the structure of the premixed flame that was the key we notice that the temperature profile goes like this and then we started asking questions about how would the product profile look like right and then we came to the conclusion that if the most of the products are actually produced here we should expect anticipate that the product concentrations should actually grow only over here but once the products are actually formed they kind of look around and see hey I am actually a lot over here and I am getting convicted down there so I am also there the only place that I am not here not around is here therefore can I diffuse but I am getting convicted down so there is like a balance of how much upstream diffusion the products can do versus the downstream convection that they experience and that would actually give rise to a concentration profile that becomes pretty much identical to the temperature profile in the event of Lewis number equal to 1 which is assumed in the Schwab-Zeldovich formulation right so then we realize that the product speed that the product species also goes through a convective diffusive balance in what we thought was the preheat zone for only the thermal balance earlier and so we anticipate that the product concentrations should look pretty much like the temperature concentrations if you normalised in certain ways right so how would you normalise like this looks like a normalised temperature in some sense not exactly T to the superscript not which is a standard temperature we should have actually put T to the subscript not for the initial temperature then this would have looked like a normalised temperature and I will come to that pretty soon but this one instead of just saying alpha is equal to minus YA which would have done the job for us here to actually make this look similar to that with T replaced by ? through this transformation we are actually saying 1-YA because alpha now begins to actually act like the product species constant concentration right so it is essentially saying whatever so if I had only to react to two species let us say a and b and then you can clearly see that why YB would be like 1-YA right if you had multiple species it will matter finally you are going to actually have something that the out of which you are subtracting YA so 1-YA will do the trick for you to actually have alpha go more like the product see so that is a that is essentially the idea here so we are actually looking for the equations to look similar by choosing a if you want to call it a transformation by choosing a transformation for the species reactant species concentration that will mimic the product variation because that is how we actually develop the the phenomenological understanding on how upstream product diffusion causes a downstream reactant depletion through diffusion so yes the effect of that is going to be felt in the flow okay so what will happen is if you really have a temperature sorry density that depends on temperature then your mass balance is going to get affected so you are when you say that rho u is equally a constant of the rho changes with temperature your u is going to accelerate right there is something that we noticed in the Rankine-Hugonea formulation that across the deflagration the flow accelerates right so 1 over rho u increases so rho decreases and therefore T should increase anyway and then you will also increase all that stuff is correct but in the in the in the in the Schwab-Zelovich formulation we are actually adopting a given flow field and the given flow field here is a uniform flow field that means no matter what they constitute constituents of the mixture or what is the composition of the mixture is as we go from the reactants to the product through the flame the mixture as a whole is having only the same velocity we are ignoring the fact that the flow is going to accelerate it is as if like we are not interested in it we are not worried about it okay for correspondingly then we can actually go with a constant density situation or we do not explicitly state that we say rho D is a constant and then you start thinking about why should D vary with rho in a way that rho D is constant and so on that is that is not exactly the way it should it is justified okay so the way it is justified as we are basically thinking about like an incompressible mixture and we are violating the gas law the perfect gas law but that violation is more felt downstream of the flame when our business is over so we do not we do not worry about it okay so this is something that I pointed out that right at the beginning when we are doing the Schwab-Zelovich or when we actually did the one-dimensional momentum to show that it will reduce to something like pressure is approximately equally a constant the point there being if you want to take into account the velocity variation in the flow then only then you have to worry about the density variation with respect to temperature and then the flow problem on the combustion problem will get coupled here we are actually looking at a combustion problem that is decoupled decoupled from the flow problem for which we have to make this assumption okay so if you now go back and plug ? and a in the energy and the species equations respectively you now get equations that look like ? D D2 ? divided by DX2- ? U D ? over DX plus W equal to 0 and ? D D2 ? divided by DX2- ? U D ? over DX plus W equal to 0 hey those two equations look exactly the same except that one of them has a ? rather one has an alpha to solve for right now if you agree Q might have a preference of ? over alpha but I am not so I am not going to really worry about which equation I am going to solve is that okay is it okay to say now it is sufficient for us to solve only one equation you do not have to solve both the equations or what is the catch would ? and ? look exactly the same as you solve for one and then expect the other one to behave exactly the same is that okay fine whenever you are confronted with two differential equations that look identical except for the the symbol that is used for the independent variable also the dependent variable I am sorry okay so all the two equations go and actually give the same result or what are we what are we missing there is one more thing that we have to worry about all differential equations have the burden of having to satisfy boundary conditions okay so at this stage we can say that ? is going to be related to alpha if it is it and it is sufficient for me to solve one equation and get and then satisfy its boundary conditions and obtain one of them let us say ? then I should be able to say that ? is equal to a alpha plus B all right and why would I say a alpha plus B because I am expecting to have two boundary conditions for alpha as well with which I can actually evaluate a and b instead of having to freshly solve this equation for alpha and then apply its boundary condition so that would actually give me room for applying boundary conditions for alpha or before we proceed in that direction we are we are probably better off looking at what are the boundary conditions for ? and see if they are also identical right if they are identical then what do we say right so let us see and we and it is not terribly unrealistic to expect them to have nearly identical boundary conditions because as I said this is mimicking the product and in the in the in the in the case of low unity lowest number we expect that these profiles should be the same right if these things have been normalized right all right so hold your breath okay hold on to your seats we are going to have some fun here right so let us look at the boundary conditions cold boundary that is x equals minus infinity alpha is equal to 0 ? equal to 0 assuming supposing T superscript 0 as T 0 without loss of generality because I could have actually written this as T minus T subscript 0 minus my minus of sorry T minus subscript T subscript 0 plus T subscript 0 minus 2 superscript 0 so I could have I could have added and subtracted my actual temperature initially that is essentially saying I have a sensible enthalpy initially above the reference value for the reactants that is now going to be added up over here which is a constant and therefore it is not going to really affect me at all so I could actually say that effectively T is whatever it is and then I and then say ? is equal to 0 and alpha is also equal to 0 because I am assuming that I am going to have all of them as reactants upstream and then alpha y a should be equal to 1 and heart boundary x equals plus infinity right now ? will now give you Cp Tf minus T0 divided by Q and alpha should be equal to y a goes to 0 all the reactants are getting consumed in the flame and therefore you are going to have alpha to be equal to 1 but what is ? you get this funny expression there can we evaluate it that is equal to 1 okay there is because of the adiabatic flame temperature in the case of an adiabatic flame temperature this is the heat that is released in the chemical reaction and all the heat that is released in the chemical reaction goes to increasing the sensible enthalpy of the mixture that is what an adiabatic reaction flame is all about okay so Cp Tf minus T0 is a sensible enthalpy rise of the mixture with which is primarily coming from Q and therefore this is also equal to 1 lo and behold the boundary conditions are also identical wow we meet such a big fuss about you know 4 5 n plus 6 reactions in the combustion problem and then we we we now believe but a lot to get the swap Zelda which formulation going and we still had to start get stuck with n plus 1 reactions n of which were fortunately homogeneous and all those kinds of things and finally we are able to actually get to two reactions that we just pick out of them and then we find that both of them are identical and the boundary conditions are also identical therefore it is sufficient for us to solve only one equation great progress right. So therefore considering one equation is sufficient if you were to still persist and say well theta should be equal to a a a plus b and you can substitute the boundary conditions for a and then plug in values of theta run alpha there you will find that a is equal to 1 and b is equal to 0 alright so and then you will you will be able to show that theta is equal to help so that that is mathematically showing things okay so what we want to do now is get confronted by that one and one equation let us say we take the one that is written first right and then we want to deal with this we want to see how to solve this right for the first time in our lives as combustion students we are going to solve something so far we have been only posing problems okay oh my god how do I solve this what is the problem that is a second-order ordinary differential equation with constant coefficients as a matter of fact okay row D is a constant row U is a constant okay and then you have a it is it is an inhomogeneous equation alright okay what is the inhomogeneity all about you have the W that is the chemical reaction rate and you have the theta there through the temperature sitting on top of an exponent with a negative sign but sitting in the denominator on top of an exponent with a negative sign so that is the ugly looking expression that has been camouflaged by a simple double do there you see and that is been the one that we have been really feeling jittery about all these years and there we are we have to solve so how do you do this chicken out of the problem say well can I look at the flame where you do not have a W yeah sure of course fear you say you get into the flame you know you you now with a lot of trepidation you get into the flame and then still no W oh sure fine this looks great so I go get in there and then no W at all for quite some time so I can solve that can I so what we would do is we now begin to notice the way we were talking about things earlier that you have a flame with a preheat zone with hardly any W where I could actually go ahead and jolly will solve this and then I have to look at this this region where I have to confront the W and then point out that you pretty much have nearly the same enthalpy for the incoming species and the outgoing species so you do not really have a convective enthalpy flux to worry about and therefore I am going to get rid of this right and I am going to look at a reactive diffusive balance and then try to integrate that right why I mean we still have to solve to take this W into account ultimately so what is the big deal the answer is what is it that we are actually looking for out of this equation can we now find out what exactly our problem is what is what is that one single quantity that we are trying to solve for do we know what the problem is you know lives we do not know the flame speed okay so although this is like a very innocent looking constant that has been pulled out we do not know what the U is right so what this actually allows us to do is we can say while I am actually in the convective diffusive balance I keep the U which is what I do not know right and then it turns out to be like an eigenvalue problem so an eigenvalue problem is where you have one of the coefficients that is an unknown and you supply the boundary conditions and then you turn out that you the boundary conditions are not sufficient enough for you to actually evaluate the eigenvalue right. So in this case what you do is you retain this in one of the regions and you get to the fit in the other region where you have to confront the W so you are kind of breaking your problem into two part divide and rule right this is my problem this was my unknown keep the unknown get rid of the problem in one and keep the problematic thing and get rid of the unknown in the other I should be able to handle this but what is the catch I solve for the this is going to have this is going to still need two boundary conditions because of second order right and my zone is only from here to here right and strictly speaking I do not know exactly where to draw this line all right it is sort of like as I keep on entering into this region and then the chemical reactions are happening somewhere I suddenly feel too too hot and then say I think I have got into the reaction zone it is a feel right I do not know exactly where it is and I need a boundary condition there while I do not even know where the boundary is okay and look at this this part right if I now want to keep this and that I still am not throwing out the leading order term which means I need to have it is still second order equation and I need to boundary conditions and the boundaries are this fuzzy boundary somewhere here and the far downstream boundary okay but all we have stated so far is I knew what the boundary condition is here I knew what the boundary condition is there so what do we have to do here we have to now come up with two boundary conditions because it is second order which are shared by these two so that is what is called as interface conditions so that is an interface between two zones and we have to supply two conditions that are shared by these two okay and whenever we are looking for two conditions it is because it is second order and if it is second order then we are looking for two conditions one in the value in the other way in the first derivative and in fluid mechanics the first derivative mostly has some significance in the sense the first derivative is going to actually deal with the heat flux the value itself is going to is going to be at the temperature okay so we will go through these steps rather quickly in mathematical way so region one is our convective diffusive balance convective diffusive zone which implies that w is approximately equal to 0 and then we can write d square we can go back to T do not worry about ? anymore that was just to show that ? and A are the same we can go back to an equation that is over there so d square T over dx square- ? u Cp over k dt over dx is approximately equal to 0 now when you say this is approximately equal to 0 this equation is what is called as the zero-thorough equation so what we are actually doing is a part of a larger approach called asymptotic matching okay or what is called as matched asymptotic expansions strictly speaking what we should say is the temperature profile can be expressed as an asymptotic expansion all right and we now try to take the what is called as a zero-thorough where whatever is actually a small quantity in the equation is set identically equal to 0 it is not exactly 0 right you do have the temperature rise and you strictly speaking have a reaction rate that is beginning to increase fortunately for us if the e is large it is going to get confined to a smaller region okay so that is what we are really counting on but it is approximate so to leading order to zero-thorough we now set it identically equal to 0 get rid of it from the equation in the first order we have to refine the equation with keeping that small value you see we will do that fortunately okay we won't do that we will just do only the zero-thorough matching so let us let us call this equation 1 and the boundary conditions here as we talked about we want to retain the cold boundary conditions which is t equals t0 and x equals 0 minus so we are now locating our x equal to 0 at the edge of the preheat zone reaction zone match and we want to call this x equal to 0 minus t equals ti many times we attempted to think that I stands for ignition temperature okay and then we are always looking for what is called as an ignition temperature that is like a popular notion and it is a popular engineering notion to think about like an ignition temperature mathematically speaking we have to confront a cold boundary difficulty that you have reactions happening even there okay it is just then it is just simply not significant enough as far as here ti is unknown actually it is not like we are going to plug in a value there that is above that is somewhere in between the room temperature and flame temperature that is not what you are going to do it is an unknown it is a it is a temperature that is going to be shared as the upstream boundary condition for the reaction zone alright and it is it is an unknown so that is that is region 1 for you region 2 is reactive diffusive zone here what we then say for the 0th order reaction is d square t over dx squared plus wq over k is approximately equal to 0 that means this is the diffusive part this is the reactive part the balance is essentially that you hardly have any convective flux that is going on that is changing so you do not have a essentially what that really means is you do not have a dt by dx significantly okay that is a very small quantity so the boundary condition here we can easily write the hot boundary condition which is x equal to infinity we can say t equals tf that is like what we had started with but then the interface condition is x equals 0 plus we have to write the same t equals ti which is an unknown right now if you are really bit a little bit more careful you would probably want to write this equation for the region 1s d square t1 over dx squared minus rho ucp over k dt t1 over dx and then write these temp these is t1 equal to t0 and t1 equal to ti you can say here you can plug in a t2 and then t2 t2 and then finally say at the interface t1 should be equal to t2 and so on okay but we understand that ultimately it is going to be a single temperature profile that we are interested in and then we said that we wanted to have one more boundary condition at the interface that needs to be shared and since it is a second order equation we can go up to the first order the first derivative is signifying heat flux and therefore what this really means is matching heat flux heat flux at the interface between the two regions two regions we get dt over dx x equal to 0 minus should be equal to dt over dx x equals 0 plus well strictly speaking we should say k dt by dx but since it is the same species and as the as you now go to 0 from both sides it is essentially the same location the case at the same so we do not have to worry about it but these gradients are coming out of two different solutions and we are actually trying to force this this is going to say that we are going to force these two solutions to have the same gradient at this point what that really means for you is keep in mind what we were talking about for the length scales characteristic length scales for thermal balance in the preheat zone versus the species mass in the in the in the in this zone when we were looking at non-unit loss number the other day we pointed out that if you were to just bother about the Schwab-Zelovich only here and then take a equation that looks like this with a 0 on the right hand side you can actually solve this but what you will find this you will get a solution that kind of goes go goes like this and then goes exponentially there for x greater than 0 which is not the domain of validity it is outside the domain of validity of this equation if you were to extend the solution that you are going to get from there for your T1 of x you are going to get a solution that goes exponentially right that is what a second order request second order homogeneous equation is going to look like you try to solve this you will get exponents right so you will have this on the other hand what we are talking about in this equation this is also something that you can solve what you will find is this is going to actually give rise to something like that and what we are saying is at this place we want to have the temperatures as well as the slopes match and that is where we want to position our x equal to 0 somewhere there right so this is typically how we want to construct the composite temperature profile in a composite manner by having this asymptotic matching what you are doing here is a 0th order matching strictly speaking because we are identically setting whatever is a small quantity in the equation to 0 and solving for it so this is the problem and out of this we are trying to get the velocity u we will do the first region and then hold on till next week for the second region with baited breath I hope right we cannot wait to get there so of course we say that this equation is 2 and we what we want to do is integrating 1 once right we say dT over dx equals rho u divided by k Cp T plus a constant and we have to supply a constant of the boundary condition to satisfy to evaluate this constant of integration one way of doing this is to actually integrate it twice and then you now deal with two constants and then apply the boundary conditions right but I am not going to do that what I am going to look for is I am actually interested in dT over dx at 0- okay so I am not really interested in going ahead with integrating this twice to look at actually the temperature profile this is a point where the analysis sort of cheats you okay so until now we have been talking about these profiles matching and all those things we are actually going we are going to think that we will we will get this matching and get this composite profile but typically at this stage the analysis does not abandon sets care about the temperature profile it now starts bothering about the velocity which is the eigenvalue right that is what we are looking for so we do not really want to care about getting this and I am stating this explicitly because textbooks do not states is explicitly and then when you go back to laminar flame analysis to actually look for the temperature profile you will not find it there okay and then they but they are like let us just go to go through this and then get the velocity put a box around then we got laminar flame speed let us talk about the laminar flame speed and this keep going on okay so you do not really get unless you go dig up literature further you cannot get this temperature profile so that is what that is a kind of attitude that you are going to get so since that means we now have to actually evaluate what the dt by dx is far upstream so we since we are saying that at far upstream in this region 1 t equals t0 at x equals minus infinity then t equals t0 for quite some distance therefore the dt by dx is going to be equal to 0 x equal to minus infinity t equals t0 dt by dx equal to 0 this is asymptotically approaching that is the reason why we are able to actually reduce this otherwise we cannot okay so the means dt by dx equal to rho u divided by k Cp t minus t0 right now if you think about it this is the first thing that we wrote in the phenomenological balance we said that rho u Cp is essentially your rho u Cp t minus t0 is actually the enthalpy rise that is happening and that is because of the heat conduction k dt by dx and we approximated it as kt minus tf minus t0 divided by delta that is what we did earlier okay so whatever we could actually write by just looking at things if you think about it takes about an hour for you to get if you go through the mathematics all right and there we are so that is what we got now therefore if you want to now apply this to the other boundary we now say at x equals 0 minus this is equal to rho u Cp divided by kti minus t0 here we are imposing the next boundary condition and then what you are going to say here and or maybe this is a good point to stop okay so we will just say this we keep in mind we do not know what ti is that is an additional problem that we have to worry about and we will see how to handle this next class.


Hi, hi everyone. My name is Muzamel. I work for LinkedIn. As an SRE, as you might know, LinkedIn is the largest professional networking site. We have over 365 million members worldwide and we recently crossed 30 million members in India. That's the second largest user base. So we Indians love LinkedIn. As an SRE, apart from our day-to-day role, firefighting is one of the major tasks and we spend a considerable amount of time while troubleshooting. So when it comes to actual troubleshooting the site or say you have a building on fire, the last thing that you want to do is search for equipments to turn out the fire than focusing on turning off the fire. So the agenda that we are going to cover today is those tools. How did LinkedIn come up with those tools and what's the philosophy of using these tools? So when it comes to troubleshooting site issues, I'm going to show most of you are from the DevOps and operational background. What's the best place to start looking at when you start troubleshooting is obviously logs. Logs can be of many format. There could be service logs. There could be engine public access log. There could be if you're running a Java application, you have GC logs as well. Now let's talk about the main topic is why we need log aggregation. Spending time identifying where your logs are stored, on which machine my application is running on. How is it distributed? Is it one application or two applications? Think about it in a way that if you have a small infrastructure, you could fit. Is this better? When we look at log aggregation, why do we need really log aggregation? If you have a small infrastructure, you possibly know where your applications are running and where those logs are stored. But as you grow, we want to provide the best functionality to the user. We want to provide the best interface. But what's the use of that site or the best application if it's not reliable or not stable enough? You need to have insight into your application and how it's behaving. You need to be able to figure out how it's doing. Having a centralized location of these logs really makes sense when you are scaling. You need to have a proper mechanism of accessing the site. In the previous presentation, what Mike was talking about solved, having a centralized place makes sense when you have a distributed system. Before we start, let's look at the objectives of what are the things that we were looking for before we decided for the model that we went. We have a very complex call graph. The one picture representing is a very simplified way. If LinkedIn's architecture was that simple, I would probably be the happiest person here, but it's not. You could understand that we have a very complex call graph. To give you an energy, think of a tree inverted and that's how a call graph and LinkedIn looks like. I'm pretty sure for all major bigger companies, that is what it is. The second thing was the major part was we should be able to reduce the MTTR because that's some main criteria of looking at how good as an SRE you are doing at LinkedIn. The third thing is we needed to have control over the production. You need to be absolutely sure who you give access to production so that there are no adverse effects. In an example where you want to involve say the engineering team to troubleshoot stuff, they probably don't have access to that production and getting them access might increase your MTTR. Having a centralized location of these logs where they have only access to these logs, that makes real sense for us. We needed to support multiple use cases. What do I mean by multiple use cases? Say like we have a mobile team, they are mostly interested in what kind of devices are accessing these are applications. Say like how many Android versions, what version of our LinkedIn application is running on that? How many iOS devices are there? How do we perform versus iOS versus Android? This information is in log but making sense of it is really important when you have it in a centralized location. The other similar use case would be like the security team might be interested in what kind of IPs are accessing our infrastructure and the third case where as SREs we need access to all the information which is in the log to see how your application is behaving. We looked at a lot of solutions that are there in the market both open source and commercial versions but we came up with this design where we use Elk. I'm sure by sure find how many people know what Kafka is and what Elk is. Okay, there are quite a few people. So Kafka is the main transport mechanism that we use for collecting these logs, Elasticsearch, Logstash and Kibana. We'll be talking in brief about all of these topics. So let's start with what Kafka is. Kafka is an open source message-broken system that is now funded or is under Apache and this was basically written in Scala. The aim of this was to provide a unified high throughput, low latency, performance handling, real-time feed. So you have a whole set of producers that talk to the zookeeper that gives us the state and the topic that they need to talk to and it gives you a list of brokers that will be listening to these events. So once the handshake happens, the producers start pumping this information to one of the brokers. So this information is all stored in zookeeper. That's a centralized location for us to maintain all this metadata and then you have a set of consumers that listen that initially go to the zookeeper and ask, hey, I am interested in this topic. Can you give me a list of all the brokers that are having this data? And then the event is stored. Zookeeper maintains the set of the offset. What do I mean by offset is whenever a new event is generated, it maintains or increments the offset and it has the ability to check at any given point in time where your consumer is so that you know how much data is actually consumed. So Kafka also supports consumer groups. It's not really a queuing system, but since we needed to have the ability from, if you remember, from a previous slide, we needed to have the ability to support multiple use cases. So with Kafka, you could have three sets of consumers listening to the same topic and each of them, the state is maintained in zookeeper. Say like this could be my mobile team that's listening to all the devices that are being accessed. The second thing could be security which are only interested in the IP addresses that are coming into the access log and the third team could be SRE which are interested in all the information. So what happens here is we have a set of partitions. By default, this is a configurable parameter, but in LinkedIn, we use per topic eight partitions that there are eight brokers and the data is actually retained in the brokers for a minimum of four hours. But based on use case, this could be increased or decreased, but those are the default parameters. Just to give you an idea of at what scale we use Kafka at LinkedIn. This is the most common transport that you could say it's a backbone for us. We heavily rely on Kafka to keeping all the applications talking to each other. It's not just that we send logs through Kafka. Our monitoring infrastructure is also heavily dependent on Kafka to emit this matrix into our monitoring framework. Just to give you an idea on a daily basis, we generate over 875 billion messages per day. This is a very huge number. From my experience, I have never seen any other application, other transport mechanism that could support this kind of throughput. On a normal day, we come up with 200 terabytes of incoming data and we pump out 700 terabytes a day. The peak load statistics looks like on a peak load, we have around 10.7 million messages per second, 18 gigabytes of inbound and outbound, 70 gigs of outbound. You might be interested in knowing why 200 terabytes goes into the infrastructure, but 700 terabytes comes out. Remember that we had multiple consumer groups that could be listening to the same topic. If that information is large, the size of the outbound traffic goes really high. Why did we decide on using Kafka? It's a near real-time transport mechanism. What do I really mean by near real-time transport mechanism?  There could be a lag in terms of when the message is actually sent out to the Kafka brokers and at the time when it is consumed. So in general, at LinkedIn, we consider it's less than a minute. So anything under a minute is in our SLA. It supports multiple consumer groups and there is no overhead on the client and they want to actually send these messages to Kafka that comes with a typical locks decision. If you have actually used Elk, you know that if you want to ship logs, you need to install agent onto your box and then that agent itself is a Java application. It needs its own memory. Then you need to have some sort of monitoring just to check out if your agent is running fine. So that overhead is neglected or is not there. Kafka scales horizontally very well. Whenever the size of the topic or the message goes high, we could just add more boxes to our infrastructure and we are good to go. As I previously mentioned, it's not just logs, but metrics are also used to be sent. So it could be any form of data that could be transmitted to Kafka and it supports REST. With this, we have an option of writing different clients that could talk in different languages. LinkedIn has clients in Java. We have Python in Ruby and we are even writing clients in Go. Since this Kafka was an in-house product, we have a dedicated team that supports this infrastructure. How does it really work? So we have a highly customized log4j library that comes along with each of our services. When this library comes online is at the start time of an application, it starts a Kafka proxy and starts piping all your messages. This is configured, this log4j library is configurable in a sense that you could decide what kind of a messages go into. By default, we send out info, warning and error messages. Debugs are not sent just because of the high volume, but this is configurable. This is something that can be enabled and disabled using a JMX call. We actually append a lot of information along with just the log line. To give you an example, we have what we call as a trace ID associated with each call that happens at LinkedIn. Whenever an application or analog is written, this trace ID is appended along with the log line. We add the server name, the container version, the war version that we are running. This helps us identifying or isolating problems in a particular box or a particular version. You have a new deployment that has happened and you want to check the status between the older and new version. You could easily do that because this information is already appended into the log line. As a developer, the only thing that you need to do is include this library while writing your application and you are good to go. They don't have an overhead in maintaining or sending this out logs to Kafka. When the service comes up, it could decide what kind of logs it sends. We basically send the service logs, the access logs, as well as the garbage collection logs into Kafka cluster. Let me give you a brief idea of what Elk is for people who don't know. Elk is a combination of Elasticsearch, Logstash and Kibana. Elk is a flexible and a very powerful open source distributed real-time search engine. It is written or backed up by Lucene. And it gives you a lot of flexibility since it supports horizontal scaling. Say today, your log size is 200 or 200 terabytes and you predict that it's going to go up to 300 terabytes. You could just add more servers into your Elasticsearch environment and you get most of the indexes and everything gets distributed accordingly. And there is no manual intervention required when you're scaling horizontally. Logstash is a transport mechanism that is supported or is needed by Elk. It's basically, it's an A, you could think of it as an ETL where we attach the Kafka console consumer, that's a plugin that we have written to in Logstash, its whole job is just to listen to specific topic or to those brokers and get the data and write it into or hand it over to Elasticsearch. And Kibana is the GUI or the interface through which we look at this data. As human beings, we are evolved or we are designed. In a sense, we make, we are good at identifying patterns. I could show you 100 different log lines. You could not make sense of it, but a picture represents a thousand words. So this really helped us reduce our MTTR because now all this information is available in Kibana. And since these dashboards are dynamic, the data gets updated near real time. Just to give you a scale of our Elk infrastructure at LinkedIn, we have over 100 plus clusters. The way we have designed Elk is that each SRE vertical team has their own dedicated Elk cluster. They manage it. They own it end to end. They're responsible for making sure what kind of data comes in, how long they want to store that information. And when they want to actually truncate this. This is split across multiple data centers. This plays a real crucial role. When it comes to multiple data centers, what we use another functionality within Elk is tribal nodes. So what we do is we have a whole bunch of Elk clusters sitting per team and then a tribal node sits on top of that. You could think of it as a federator, which makes calls to specific Kibana instances to get and aggregate the data. Largest cluster is somewhere around 32 billion documents and eight size-ups up to 30 terabytes. On a daily basis, that particular Elk cluster gets about 3 billion documentations. So in a sense, you're good to go because this number is somewhere realistic to a large company. And if anybody is interested in setting up this kind of infrastructure, they can expect that the cluster would easily handle this kind of peak load. So what are the use cases for or where do we generally use Elk? The majority of the time it's used in tracking exceptions, Java exceptions. As you know, reading an exception log is pretty difficult when it comes to Java because the strike trace could span up up to hundreds of lines. We use Elk to maintain our dashboards. Whenever there is a new exception and comes in, we will be able to easily track it because we maintain a whole state. We use it to trace a call. This really is important for us. Say like you want to identify or look at a specific call that comes into LinkedIn and you want to trace down the entire call span from the front-end meteor to the database. So whenever a call is made within LinkedIn, we attach a unique ID with that call. This ID is then passed on to each of the corresponding application. So we could easily using this call trace, we can figure out if that call fails at a particular instance, you will be able to easily track it down. We use it to parse engine public access logs. Say we have an increase in 4XX or 5XX or a number of exceptions that are coming into or so we could easily use that to parse these logs. We even use Elk for deployment impacts. So what do I really mean by impact of the deployment? Say you have included or deployed a new wall. You probably want to canary it first before it goes into production no matter how good your testing or a QA infrastructure is. Things really don't pan out the way you have planned it. So what you could do is easily set up a canary and run comparisons against the canary and a baseline host so that you figure out where if there is any positive or a negative impact to your applications after a particular version goes out. And we even use this for looking at changing trends. What do I really mean by changing trends? Whenever you probably are including a new feature into your application, you want to see how the response is. Is that particular change into your application code or the call is the one that's increasing your latency or not? Or is it the one that's causing high impact? That is where we generally use this. There are multiple use cases but I just wanted to highlight some of the most common ones that we have so to look at this. So in a conclusion we need log aggregation to be able to be able to look at them on a look at our logs on a historical basis and make sense of it. This kind of infrastructure even helps us to reduce the retention of logs into your server.  You probably want to keep it low and we even are considering whether making and writing logs to the box is worth if we could actually incorporate L to all our infrastructure. So that's something that we are looking at right now but not finalized but there might be a chance that we don't even write these logs to the box so you're awarding your IOs and you can use that on the application layer. I believe I finished much faster. So that's about that I had if you have any questions. Why use Kafka over something as simple as like R Sync or like what is the advantage you got by using Kafka? So by using Kafka you do not have to run any other service. You gave an example of R Sync. I gave you an example of a Lumberjack application that comes with LogStash. So that's something that you need to configure on top of your application to do this but with Kafka you just incorporate one of our libraries and you're good to go. You do not have to set up anything on top of your application. But Kafka would also involve setting up some kind of the Kafka cluster would also involve setting up an infrastructure. So that's a separate infrastructure which your application doesn't really have to care about. So where you're running your application you do not have to set up anything else. Your box is only free or is available to run your application. Nothing else needs to be running on that. And Kafka has its own infrastructure to which you send. Check. Hi, Nenad here. I have two questions. One is a technical question. One is a slightly product or legal issue that comes in. The stack itself is pretty bad at handling access control. So how are you doing it across say teams because you mentioned every SRE team has their own ELK cluster. How do you ensure that for example customer support may be able to access business logs as they're called while a developer should be able to look at all the logs in the system. So this is one question. The second question is what are the different data life cycle things like in all the different teams because some teams can say I need data only for three months. Some teams will say I need data across two years. What are the different patterns you've seen and the main gotchas are the pros of the popular ones in saling them. Thanks a lot. Yeah. So when it like we really want to control the access to we use within Apache we use nginx to run as a proxy and nginx supports LDAP authentication. So we use that to control who has access to these instances and where we run EL is within a controlled environment and there are ACLs in place. Yeah, firewalls. We have rules that are in place to make sure that only a specific set of users like SREs or developer have access to it. Going back to the second question is about retention of logs. How this is so again it's unused to use cases probably like I know from the mobile team they keep data over a year to see the change in patterns every time a new version goes out for your application you would want to see how it behaving and you want to go progressively better with new versions of it. Some teams like there's another team that I have known of security. They also maintain data for over a year. That's another use case. There could be some teams who really are not interested in retaining data for one year. They just keep it for 15 days. So it lies from use case to case basis. So yeah, so what happens is like if we go with the mobile example you need to have a very large infrastructure to support this. One of the biggest problem that we have faced with Elasticsearch is they recommend that your JBM size should not exceed more than 32 GB. So there is only a limit of data that it can hold in memory. Yeah, so yeah, so what happens is in that case you need to keep on adding more servers. But since Elasticsearch is a distributed environment, you can easily add more servers horizontally and you would not see any adverse effect. The only adverse effect we have seen is where we go for vertical scaling, where we add a large disk, even if it's an SSD, we have seen a very bad performance. So the recommended model is horizontal scaling rather than vertical. Hello, if you came across with a tool called PubSubHubbub, there is something called Publisher and subscriber comes up communicating with a hub. So is there something in Kafka that it talks to a hub and distributes it across? Yeah, Kafka is a PubSub model. So if you remember my first slide about Kafka, you see there are a set of publishers that publish the message to a broker within Kafka. And let me go back. Yeah, so this is Pub and sub part of it. And then you do not have to worry about which broker you are sending the data to. So you mean to say that the broker is hub here? Yeah. No, so if the broker doesn't have any resources that it needs, I mean, it doesn't need to send anything. So it will be in an ideal state or it will be like an awake model where when someone hits the event and then come back and give the event back. So if there is no data coming in, it's in a hot standby state. Whenever new information comes into Kafka, it's always there ready to listen to something. So what we do is we never have found a use case where an entire Kafka cluster has sitting idle for certain reasons because the amount of data, like you said, we have around 875 billion documents that messages that go on to that has never happened to us where it and cluster is sitting idle. So last question. You heard about this tool, PubSub above where you at least consolidated like whether it comes to our requirement when it compared with Kafka because it's been a Google tool. So I'm not sure about it. I've not got the idea. Okay. Thanks. Couple of questions. You mentioned that you have clients written in Python also, which is which are pushing data to Kafka. I checked around a month back. The Python producer was not well and do keep aware like the Scala and the Java producer. Second question is, is there a better way of replication in Kafka? The last I know of is the mirror maker, which is which itself is tedious to set up. Yeah. So going back to your first question is you are using the ODOT7 version of Kafka or ODOT8. ODOT8 should be a zookeeper aware. But you mentioned that you have clients written in Python as well, which are pushing data into it. The Python producer, which I saw on the Kafka side, that was one zookeeper aware. From what I understand it supports, but I will have to because honestly speaking, I'm not an expert on Kafka, but it should be aware of the zookeeper and it should maintain state for you. The second part of the replication one. So could you repeat the question? The question which I had was that, is there an easier way of replication other than the mirror maker one? No. That's the best way that we recommend. And this is part of the Apache documentation that is sent out. Even at LinkedIn, we use mirror makers for aggregation within different fabrics or different data centers. Thanks. Yeah, I have two questions for you. First one, you talked about log4j customization. Can you speak a bit louder? You talked about log4j customization for the log format. So is this something related to Kafka standardization of the log format? And what kind of customizations you're talking about in terms of log4j? So the second question is how does a broker know which topic to go for? Like which cluster node topic and like how a broker knows which cluster node to go for. Okay. To answer your first question is the customization on the log4j is basically supporting a standard of logging. Since you have an array of application, you would probably want them to be of a standard format. The second customization that we have done is ingestion into Kafka. When log4j library comes up, it establishes or runs a Kafka proxy that's responsible for appending these logs into Kafka broker. The second part is, so can you repeat the second question? So yeah, so ZooKeeper is responsible for maintaining the state. So if you go back to my previous slide, you would see that ZooKeeper has the information of each topic that is there and who are those brokers that are responsible for this draft topics. Hi. As far as I know, as I know that when you create an index on elastic search, the number of shards are fixed. You cannot change it once index is created. And looking at the volume and the peak situation, so there are two questions. How do you estimate the number of shards? And if you see that it's not able to handle, how do you change the situation and increase the number of shards? Okay. So there are two situations. One is where your index is already created and say you have X number of shards associated with that index. There is no way in elastic search you can increase those shards. The best thing would be to re-index it with the new shard configuration. The other thing is elastic supports dynamic templating. So what you could do is using dynamic templating, you could increase the next shard that is created from X to Y. And whenever that new index is created, you have that number of shards available with you. Just curious to know about your Kafka cluster size. That's one thing. And the second thing is that the log4j module which is modified the version used in LinkedIn, is that open sourced or not? I'm not sure of the exact cluster size that we have, but I believe we are having more than thousand nodes supporting Kafka, thousand servers that are just supporting the infrastructure for Kafka. And the log4j library is not open sourced as of now, but I'm not sure if there is any plan to do that as well. Hey, so here. I can't see you. So I have a couple of questions on Kafka and then the whole ELK model. One part is that you use customized log4j to send the logs over the wire, right? So have you come across situations where the Kafka cluster itself was flaky and the logs were not able to shape and then you have to re-iterate and then you have to again push it. So do you also fall back on a log files if there is a network problem or if there is a problem with the cluster? Or you just simply discard those logs? So when is that okay? Losing the data. So what model you adopt there? So we go by the latter part is we try the best effort to send out these log messages, but we do not want to adversely impact the application by retrying these stuff. So according to our philosophy, it's a long line. It's not actual data loss that you have. So we would probably discard that message and the subsequent message if the network goes healthy after that, we'll go through. Okay. Other question is more about a UID. Like you mentioned, okay, you generate a unique ID for every log line. Okay. Yeah. Every call that happens into LinkedIn and that's appended into the log. Yeah. So what is the logic to generate the UID across the components? Like it will be going through calls with the API and other layer of services. So how do you make sure, okay, the same UID is going through all the places? So what happens is, so when an application gets in a request at the front end, it has the logic of generating a unique ID. That unique ID is then passed on to the say business logic layer. So that front end probably needs to talk to 10 different business logic application. So when it makes that call, it passes this unique ID to them. Okay. And that is where we are able to build a complete call price. Okay. So do you guys use still 0.8 or 0.8.2 on the one that is latest from the Apache Kafka? So we are on 0.8 as of now. Okay. So still that's why you are using Juki perfect to maintain the offsets, right? Yes. Okay. And what log format is this a JSON format or it is a plain text? It's a plain text. Plain text. Okay. Actually we were using the ELK stat on our production systems and we found it very slow. Actually there was a lot of performance impact on the system. And so then we decided to actually use it offline for offline tracing. But if you want to trace in real time, what is the solution that you would suggest? So again, the reason we went with as a Kafka as a transport mechanism is to avoid any overhead into your application itself. And then yeah, there were some cases with the older version of Elasticsearch, which was relatively not that fast. But the latest version that 1.4, 1.4.2 I believe has fixed a lot of issues. So we have seen a considerable increase in the performance. Hello. Here. So yeah, so Kafka, the message delivery syntax semantics are at least once. So, but when you're actually pushing out, let's say business metrics, you want the exactly once delivery semantics. I sort of understand why it is at least once, but at LinkedIn have you found some ways to have a wrapper on top of it for use cases where you need exactly one semantics? For example, you don't want metrics to be calculated twice. In the business use case scenarios, because that would be disastrous. So as this is a publishing subscription model, you do not have, we generally never get duplicate events. And Kafka within itself has some logic to avoid duplicacy. But if there is any duplicacy, we assume that the application or the endpoint that is consuming it needs to be intelligent enough to understand that. So it's because we wanted to be high throughput and low latency. So we're trying to avoid or keep as less load on the Kafka infrastructure as we can. Hey, here, center. So you mentioned log forges, your primary log input. What about the other applications like say Apache engine x that directly write to file or other applications who write to say syslog? How do you capture those inputs? And the second question is if you're running a log stage agent on each of your servers, what, I mean, it will consume load if the application starts writing logs at a high rate. So how do you handle that? So I'll answer the second one first. Is by default, as I said, AV only log info warning or error messages. Debugs are not recommended. Debugs are only allowed if you want to troubleshoot and it's only per box, per application, you turn it on and troubleshoot it. So it's not recommended that you send it over to Kafka, but if you have to, for some reasons, it can be configured through a RMI call within that application. That should be good to go and you can send those messages, but it's not recommended within LinkedIn. And your first question was, can you please repeat that? Yeah, it was about inputs other than log forger, files and syslog. So we are working, as I said, we are working on a Python client and we are even looking at using the logging library within Python to be able to send directly to Kafka, but we are not completely there. But once we have that, we'll probably open source it. Have you had any issues where your Kafka service was actually backed up by a lot of messages from the client side? That's the first question. The second question is, the log shipper has changed before they used log stash for Java. So you talked about a condition where the log stash isn't going to be, it's an agent and you didn't want to go by that. There are a lot of projects that have come out something like Mozilla's HECA and the recent advancements by Mozilla on a language called RustLang, which is going more native, which might be more faster to actually ship a log. That's what we're trying to look at. Have you tried to look at such projects like Mozilla's HECA, packet beat, and compare with the trade-offs that happen by shipping it to Kafka? So two questions. To answer your second question, we are not looking at any of their options other than Kafka, because this is something that we want to improve on. This is a LinkedIn baby. So in that sense, we would probably keep using Kafka and keep on improving on that. We have not looked at any other options that are available in the market. The first part is yes, there were instances where the broker, so the lag was on the consumer side. Every time we have seen this, the broker is able to handle this because we have a special hardware or infrastructure setup for it. All our SSDs, they have over 128 GB of memory for them. So there is never a problem. The only problem that we have seen on the consumer side, they are too slow to consume these messages. So we have set up a four hours of retention for them so that they give time for the consumers to consume them. But if they do not, those messages are dropped. Hey, so two questions. First one, what is the size that the broker, Kafka supports, message size? And the second one, what if the broker goes down? I mean, how is it handled? So from what I know of, there is no limitations on the size of the message that goes into. And to answer your second question is, we keep a replica of each of these brokers. So we could easily switch from a bad broker or broker that has gone down to a standby broker and your messages will go through. And since all the offset is stored in a zookeeper, you are not going to lose any of your information. So is it a manual switch or? Right now there is an option of switching it automatically, but since you would want to really know why your broker went down because it's a bad thing to happen, we tend to use a manual switch. Thanks. It's the primary storage for us. Sorry, I didn't get you the second one. Yeah, we have a dedicated, like I said, we have a dedicated team that supports it. So we kind of keep an eye on how this infrastructure is behaving. We even, okay.  How would I know that Kafka is not backing up? It's going bad or it's not provisioned enough. Is there a monitoring for that sort of auto build into say dumping data into say, you know, graphite or something like that? So since Kafka supports rest out of the box, you could use that rest APS to monitor the offset. So this information is stored in zookeeper. It tells you where the consumer is and where your tail is. In terms of it maintenance and head and tail, head and tail is the information or the events that are stored within the broker. So you could easily use that information to set up your own monitoring. But out of the box, I don't believe we support or we don't emit this kind of information. One last question. So if I mean, I understand that having a PubSub mechanism allows you to do multiplexing of receivers. And without the publisher needing to do anything about it. So if you just have one entity that the logs are supposed to go to, then would Kafka still be of any use or would it give any significant advantage or anything over, say, if you were to just use a lightweight lumberjack shipper from the client? The main reason we don't use something like a lumberjack is you're adding another application that's already, which is running your production applications. So the idea of having an application sitting on top of it and then you need to configure what files you need to actually read from lumberjack. You need to specifically arbitrarily provide the files that you need to read from. That's going to increase your IO. It maintains a state DB as well to figure out what kind of logs have been sent out. So you're increasing the IO, CPO memory utilization of a box. Is that an advantage in the sense that you don't need to modify your application at all to monitor or something? Say for example, if you want to monitor the response times of your engineers, then you don't need to, like, rebuild engineers or anything. Just looking at the log files, you can do it. Yeah, again, it would be on a used-to-use cases. But again, we feel that we need to provide more flexibility of a user that he or a developer or an engineer is. He does not have to worry about what kind of information, what do I need to make sure to set up that these logs are shipped out to Kafka. That then he just, his more concern, his more concern should be writing his application and not worrying about these things. That's philosophy. If I have a web application and I would need to use this, that would mean that I do an import of one of the Kafka libraries in my application and say some configure that library and say log this in my application. That's all that I want to do, right? Yeah, that's it. Okay, thanks.


Everybody's afraid of everything these days. It's ridiculous. Today, I'll talk about 10 things that we're not afraid of and you shouldn't be either njrude22.com here with another general interest vlog here, and this is about society overall and We're talking about how and I see this in my family as well. People are afraid of everything these days. Everything is like some big drama and scary Situation everybody's like like cowering. It's ridiculous. I'm gonna rattle off 10 things that we're not afraid of and I that I don't think you Should be either and this is in no particular order. There's no countdown. There's no anything else But the first thing I want to talk about is plastic You know as I drink out of my recycled or repurposed starbuck cup. I'm drinking and a plastic strum drinking some spiked seltzer Corona spiked seltzer Pretty good still like smirnoff better. It's cheaper too. But anyway, I'm not worried about everybody's on a BPA free BPO a and all these toxins and it molecules I don't understand and then now they're even going after plastic bags as well plastic seems to be like Like the scapegoat for something or the redirection of money Because they're worried about the environment and one plastic bag gets stuck in the tree now the whole world Is is has to schlep their own stupid bags around reducing the overall Output of the planet like like 50% because everybody's has to start schlepping things. It's ridiculous plastic bags were great Anyway, we're not worried about plastic And another thing that I hear a lot are people talking about toxins You know, there's toxins everywhere. Oh, I can't have toxins in my food toxins on my skin toxins in the air They're always talking about toxins, but yet, you know the lifespan. It's like the longest ever It's not like did these people they're 90 something years old today Art were worried about toxins back then when they were younger. I think in the in the end They're they're mostly harmless. Yeah, sure.  I hate it's like a scary word And the next thing and by the way, this is all off the cuff I have one word here and I'm just going off off the top of my head But another thing that people are afraid of these days are bad guys mostly what you see in the news are like terrorists and all sorts of like tyrannical leaders of foreign countries like 8,000 miles away from us and there's all these bad guys everybody's afraid of the bad guy They need a bad guy. I'm not afraid of him anyway, you know, they're not here in our neighborhood there's nothing to be afraid of and Even like low I mean, I guess I would be afraid of just like the psycho police chief or something That's out to get people and they have tools that normal people don't have but I'm not afraid of Bad guys. There's nobody's hurting us and if somebody hurts us they have to deal with me. That's it And here's one of my most important ones I should have put this in a countdown and done number one, but the planet, you know I could put up the George Carl and all the planet We're all scared of the planet the planet always wins.  Well, anyway Everybody's worried about the environment as well pollution oil.  The planet will heal itself And also another thing that I've noticed in the past few years is how now every weather event Is now some sort of scary warning? Oh There's an advisory. There's there's a high wind warning even snow squall warnings come across my phone Thank God I turned them off by the way all warnings except the only thing I can't turn off are the Presidential alerts, but I don't need to know about a snow squall I can tell if something's happening or if a tornado is coming You you have a general idea of the weather and and you know, you're good to go There's nothing that bad unless you live near a The shore and a hurricane is coming or there's something like a 20-inch rainfall Expected and you've had a lot of rain in the last six weeks or so then you might be a little concerned And you but smart people prepare for that, but it's the lexicon that's changed. They use all these Like fear-inducing phrases which are very frustrating. I'm not happy about it.  I don't know I think a lot of people do get duped but you know educate yourself figure out how not to do anything without at least Researching it ahead of time and before you pull the trigger and give somebody your financial information Then another one that should be also near the top of the list is pandemics and diseases cancer being one of them and all these viruses that are going around and They they couldn't scare people enough with the flu You know, you had the swine flu avian flu zika flu bird flu all these flues that you know the flu migrate Metamorphosis every year there's ten or twenty or thirty different strains of the flu. They beg you to get a flu shot and That flu shot is not going to be good against like 80% of the flu strains that are out there. It's ridiculous We have so many people on the planet. We're not going to run into any problems Unless you're sickly and weak, which hopefully you're not Anyway, another thing I'm not afraid of is war all these fears of war that I remember back in the day It was a it was the Cold War. It was the Russia war nuclear war. How all this stuff? So long as it doesn't happen here. I don't think there's any kind of problem. We have a really good military I wouldn't be worried about war and here's another thing That a lot of people are afraid of these days It's having different ideas or speaking off-color telling a like a crude joke We used to tell jokes about races handicapped people Fat people we used to tell jokes and it was funny and you moved on with your life You treated each person as an individual now every day everybody today's I see them sugarcoating everything and tip-toning around all their Subjects. It's really truly annoying. You know, don't don't sacrifice your individuality and your personality Because you have a different idea if people don't like it Then you've just pretty much you can you can scratch them off your list of people or You know being your friend or you can maybe try to help them in some other way And last but not least here the things that we're not afraid of it's the whole smoking industry Whether it's whether you're a casual smoker or around secondhand smoke.  That's a shame because fear is one of the most profitable motivators out there just read any good Propaganda book or marketing book and you'll see that but we're going to talk next about Five things that we might be a little worried about There are five things that and it is so I don't sound like I'm overconfident or snobbish or anything like that But there's a few things that we were on our radar number one. It's it's alcohol consumption I think long-term alcohol consumption is something that needs to be addressed. It's a real problem I don't think even just someone who has a couple drinks a day like us Can just you know smooth skate skate smoothly through life without being concerned about the problems it has on your liver pancreas gallbladder and other parts of Your body so we're going to we're working on it. We're working. We've already cut back down to like 60 or 40 or 30 or 40 percent of the time we're drinking Which sounds like a lot, but it's a lot less than it used to be and another thing that Concern us are the the amount of sugar and carbohydrates and things that are Eat by a majority of the people now We're not worried for us per se, but we're worried about our family and our children And I'm trying my best to be I'm against the grain and it's hard to Sell sell this to someone who doesn't get it on their own But I'm concerned for my family in that respect because I'm now I'm now liar. They don't believe me and Another thing that I'm concerned with as I watch everybody else get dumbed down and and get forced into corners of ideological beliefs and politics and so on it's It's the number of people that I'm meeting these days that don't have critical thinking skills They just believe everything they read Word for word and no one really has the skills anymore to think And have an open-minded Viewpoint on the world and as more and more people fall into this category You're going to find it very hard to to difficult to navigate the world just ordinary conversations or transactions with people I think people are truly becoming dumber just like that idiocracy movie and it's a shame another thing that might concern us is the the overreaching Government and the surveillance state and how technology has really started to make Make smart people concerned about you know, like you soon you won't be able to say anything That's why we don't bring those listening devices into our homes And we don't have our phone with us and if it is it's all shut off and we have special security things I can't prove that they work perfectly or not But it's there or that's very very scary like it's happening in China You can look at the social credit scores and stuff like that. That's something I don't know how soon in our lifetime that'll happen But we're concerned about that and lastly one of my main fears is being stuck somewhere either a large Environment with limited escape routes it's it's out of control mobs and and people that are maybe some sudden flash mob of psychopaths comes in our path and That's those are situations where you have to think quickly and act decisively and if you're open Concealed carry person you got to know how to use your weapon and also Always know where your emergency exits are and how to get out of a situation To bring yourself and your family to safety because there's no logic happening There's no reasoning if there's a mob of a thousands of people you that's a very dangerous situation to be in and There's not much you can do unless you're prepared and you plan ahead So those are things that I I get scared of but I avoid them You can avoid them very easily by not putting yourself in those situations, but that's it I guess my final tip is to avoid all the mainstream media and if you do watch it make sure you have counter Counterpoints to them and have friends that have differing opinions from you as well So and that you're able to have a decent conversation with without just you know Pouting that you someone doesn't agree with you We only scan everything just to see what's going on in this world So that's it if you liked the video hit hit the like and subscribe and I'll see you next video


what's going on everybody welcome back to the weekly raking show where we go through all the ATP and WTA changes to the top 10 and to the race to the finals at the end of the year let's go start with the ATP haven't been too many changes despite Rafa winning in Rome last week the top 10 for the men this week has not changed Novak Djokovic he stays at number one Daniel Medvedev at number two Rafa Nadal just behind him at number three Dominic team he's at number four Defano City pass number five Alexander Zvere very close behind at number six Andre Rublev at number seven Roger Federer he's at number eight Matteo Baratini at number nine and Diego Swartzman rounds out the top 10 let's go have a look at the race to Turin and we have Defano City pass staying on top for another week he has collected more points this year than anybody else we have some changes to all the other rankings here we have Novak Djokovic he goes up to number two while Rublev goes down to number three after Djokovic made the final of Rome and then Daniel Medvedev he drops down to number five Alexander Zverev going up one spot to number four after making the quarterfinals in Rome last week and Medvedev not doing great on the clay and the biggest mover of the week has been Rafa Nadal he's gone up four spots from number 10 all the way up to number six after winning the title in Rome last week so he's at number six Karatsov he goes down to number seven her catch the Miami Open Champion goes down to number eight Baratini goes down to number nine and Yannick Sinner drops down to number 10 rounding out the top 10 for the week the race to Turin having a look now at some of the players that have gone up in the rankings and Riley Opelka he's gone up 12 spots to number 35 in the world after making the semi-finals of Rome last week and Lorenzo Sonigo he goes up five spots number 28 in the world also making the semi-finals of Rome last week so both semi-finalists from last week have gone up in the rankings and are looking to get seated at the French Open some of the players that have dropped down in the last week Casparud he was at number 16 last week he's dropped down five spots to number 21 after failing to defend the points that he made last year making the semi-finals of Rome and also Coppa he's gone down nine spots to number 59 after failing to defend the quarter-final that he made last year let's go have a look at the women's top 10 for the week and Ash Barty she stays at number one Neymar Sarkar is still at number two with Simona Halep rounding up the top three we're closely followed by Irina Sabalinka at number four she is catching Halep at the moment Sofia Kenan she's at number five with Alina Sfedalina very very close behind her at number six Bianca Andrescu is number seven Serena Williams at number eight but we have a new world top 10 player Egas Fiontek she has gone up six spots to take the number nine spot that is a career high for her a first time in the top 10 for her after winning Rome last week which pushes the Rome finalists from last week Pliscava down one spot to number 10 and Petra Goviteva has dropped out of the top 10 for this week having a look at the race to the finals the race to Shenzhen for the WTA finals and we've got some big changes Ash Barty she stays at number one but Neymar Sarkar and Irina Sabalinka they switch spots Sabalinka going up one spot to number two with Osaka dropping down to number three Moogaruta she stays at number four but after a very impressive week last week Sveontek has rocketed up the rankings and taken the number five spot she's got up seven spots from this time last week takes number five spot pushing down Brady to number six Mertens goes down to number seven and Kudamatova goes down to number eight Spetalina she's at number nine and Pagula rounds out the top 10 with Moogaruta dropping down five spots completely out of the top 10 let's go over look at the some of the players that have gone up in the rankings over the last week and to see Americans they've gone up to career high rankings Pagula she's at number 28 in the world she goes up three spots after a good week last week in Rome she actually beat Neymar Sarkar as well so a confidence boosting week and Coco Goff she's got up five spots to a career high 30 in the world after a great week in Rome also so both American ladies doing well on the clay and at this stage they'll be seated going into the French open in two weeks time having a look at the some of the players that have dropped down in the rankings over the last week Joe Conta she's dropped down to number 20 in the world two spots lower than last week after she failed to defend the points from Rome a couple of years ago and also Venus Williams she's gone down 15 spots she's now 102 in the world and with that ranking she's going to have to rely on wild cards to get into the grand slams now so Venus Williams continues to drop down the rankings now outside the top 100 so there you have it they are the rankings for the week let me know down in the comments below who are you most shocked about who are you most excited about Igor Spiontek starting to prove that maybe she can defend her French open title this year she played a great week in Rome last week beating some really really good players as well so let me know down in the comments below who are you most shocked about or who are you most excited about getting into the top 10 so there the rankings for the week Rafa starting to make his move and Spiontek also starting to make her move